最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)定義一個(gè)通用返回值

 更新時(shí)間:2022年09月23日 08:46:33   作者:Csharp小記  
這篇文章主要介紹了C#如何實(shí)現(xiàn)自定義一個(gè)比較通用的返回值對(duì)象,然后使用泛型來(lái)傳遞需要return的數(shù)據(jù)。文中的示例代碼講解詳細(xì),感興趣的可以了解一下

場(chǎng)景

很多情況下,我們?cè)谑褂煤瘮?shù)的時(shí)候,需要return多個(gè)返回值,比如說(shuō)需要獲取處理的狀態(tài)以及信息、結(jié)果集等。最古老的時(shí)候,有用ref或者out來(lái)處理這個(gè)情況,但是需要定義處理等操作之類的,而且書寫也不是很舒服,感覺(jué)就是不太完美;后來(lái)有了dynamic后,覺(jué)得也是個(gè)不錯(cuò)的選擇,可惜也有很多局限性,比如:匿名類無(wú)法序列化、返回結(jié)果不夠直觀等。再然后就寫一個(gè)結(jié)構(gòu)化的對(duì)象來(lái)接收,但是如果每個(gè)方法都定義一個(gè)對(duì)象去接收的話,想必也會(huì)很麻煩;

需求

所以,綜上場(chǎng)景所述,我們可以寫一個(gè)比較通用的返回值對(duì)象,然后使用泛型來(lái)傳遞需要return的數(shù)據(jù)。

開發(fā)環(huán)境

.NET Framework版本:4.5

開發(fā)工具

 Visual Studio 2013

實(shí)現(xiàn)代碼

[Serializable]
    public class ReturnResult
    {
        public ReturnResult(Result _result, string _msg)
        {
            this.result = _result;
            this.msg = _result == Result.success ? "操作成功!" + _msg : "操作失敗!" + _msg;
        }
        public ReturnResult(Result _result)
            : this(_result, "")
        {
        }
        public Result result { get; set; }
        public string msg { get; set; }
    }
    [Serializable]
    public class ReturnResult<T> : ReturnResult
    {
        public ReturnResult(T _data)
            : base(Result.success)
        {
            this.data = _data;
        }
        public ReturnResult(Result _result, string _msg)
            : base(_result, _msg)
        {
        }
        public ReturnResult(Result _result, string _msg, T _data)
            : base(_result, _msg)
        {
            this.data = _data;
        }
        public T data { get; set; }
    }

    public enum Result
    {
        error = 0,
        success = 1
    }
public ReturnResult<string> GetMsg()
        {
            return new ReturnResult<string>("msg");
        }
        public ReturnResult<int> GetCode()
        {
            return new ReturnResult<int>(10);
        }
        public ReturnResult<Student> GetInfo()
        {
            Student student = new Student
            {
                id = 1,
                name = "張三"
            };
            return new ReturnResult<Student>(student);
        }

        public class Student
        {
            public int id { get; set; }
            public string name { get; set; }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var result = GetCode();
            if (result.result == Result.success)
            {
                MessageBox.Show(result.msg + result.data);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var result = GetMsg();
            if (result.result == Result.success)
            {
                MessageBox.Show(result.msg + result.data);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            var result = GetInfo();
            if (result.result == Result.success)
            {
                MessageBox.Show(result.msg + Newtonsoft.Json.JsonConvert.SerializeObject(result.data));
            }
        }

實(shí)現(xiàn)效果

代碼解析:挺簡(jiǎn)單的,也沒(méi)啥可解釋的。

到此這篇關(guān)于C#實(shí)現(xiàn)定義一個(gè)通用返回值的文章就介紹到這了,更多相關(guān)C#通用返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用C#實(shí)現(xiàn)寫入系統(tǒng)日志

    使用C#實(shí)現(xiàn)寫入系統(tǒng)日志

    本文給大家分享的是作者使用使用C#實(shí)現(xiàn)將軟件日志寫入系統(tǒng)日志中的方法,十分巧妙,有需要的小伙伴可以參考下
    2018-01-01
  • WPF實(shí)現(xiàn)輪播圖效果(圖片、視屏)

    WPF實(shí)現(xiàn)輪播圖效果(圖片、視屏)

    這篇文章主要介紹了WPF實(shí)現(xiàn)輪播圖效果,以下是一個(gè)使用WPF技術(shù)實(shí)現(xiàn)圖片和視屏輪播的簡(jiǎn)單案例代碼示例,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,感興趣的小伙伴可以自己動(dòng)手試試
    2023-10-10
  • C#使用CryptoStream類加密和解密字符串的實(shí)現(xiàn)

    C#使用CryptoStream類加密和解密字符串的實(shí)現(xiàn)

    CryptoStream設(shè)計(jì)用于在內(nèi)容以流的形式輸出到文件時(shí)加密和解密內(nèi)容,本文主要介紹了C#使用CryptoStream類加密和解密字符串的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C#面向?qū)ο笤O(shè)計(jì)的七大原則

    C#面向?qū)ο笤O(shè)計(jì)的七大原則

    這篇文章主要為大家詳細(xì)介紹了C#面向?qū)ο笤O(shè)計(jì)的七大原則,未讀文章之前大家說(shuō)一說(shuō)都有哪七大原則,是不是七大原則都可以全部列出,想要了解的朋友可以參考一下
    2016-05-05
  • C#讀取XML中元素和屬性值的實(shí)現(xiàn)代碼

    C#讀取XML中元素和屬性值的實(shí)現(xiàn)代碼

    用C#讀取xml有很多方式,這里我就先使用XmlDocument讀取Xml,用一段代碼遍歷所有元素,并打印student的所有屬性和子節(jié)點(diǎn)的值
    2013-04-04
  • C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法

    C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法

    這篇文章主要介紹了C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法,涉及C#數(shù)據(jù)庫(kù)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#通過(guò)windows注冊(cè)表獲取軟件清單的方法

    C#通過(guò)windows注冊(cè)表獲取軟件清單的方法

    這篇文章主要介紹了C#通過(guò)windows注冊(cè)表獲取軟件清單的方法,涉及C#針對(duì)注冊(cè)表的訪問(wèn)讀取與遍歷操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • c# 實(shí)現(xiàn)雪花分形的示例

    c# 實(shí)現(xiàn)雪花分形的示例

    這篇文章主要介紹了c# 實(shí)現(xiàn)雪花分形的示例,幫助大家更好的利用c#繪制圖像,感興趣的朋友可以了解下
    2020-10-10
  • 談C# using的用法與好處

    談C# using的用法與好處

    這篇文章主要為大家詳細(xì)介紹了C# using的用法與好處,具體分析了using指令調(diào)用的Dispose()方法,感興趣的朋友可以參考一下
    2016-05-05
  • 詳解c# 深克隆與淺克隆

    詳解c# 深克隆與淺克隆

    這篇文章主要介紹了c# 深克隆與淺克隆的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論

盱眙县| 甘谷县| 浠水县| 普格县| 津市市| 陈巴尔虎旗| 措勤县| 岱山县| 桂林市| 哈密市| 迁西县| 呼和浩特市| 太仆寺旗| 阆中市| 天祝| 光泽县| 琼海市| 防城港市| 甘谷县| 平乐县| 岳阳市| 布拖县| 鄱阳县| 双辽市| 甘南县| 金湖县| 冕宁县| 涡阳县| 阿勒泰市| 荔浦县| 区。| 蒲城县| 建平县| 车致| 洛宁县| 北票市| 灌阳县| 丹凤县| 新丰县| 土默特左旗| 台北县|