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

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

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

場景

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

需求

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

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

.NET Framework版本:4.5

開發(fā)工具

 Visual Studio 2013

實現(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));
            }
        }

實現(xiàn)效果

代碼解析:挺簡單的,也沒啥可解釋的。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    C#通過windows注冊表獲取軟件清單的方法

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

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

    這篇文章主要介紹了c# 實現(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

最新評論

手机| 满城县| 乌拉特后旗| 华容县| 肇源县| 东光县| 邯郸县| 枣阳市| 句容市| 万载县| 连云港市| 南充市| 镇赉县| 兰溪市| 松溪县| 梁山县| 南充市| 乌兰县| 临猗县| 通城县| 九台市| 黑山县| 井研县| 长海县| 梁河县| 东源县| 云梦县| 区。| 姚安县| 奇台县| 阳朔县| 红原县| 清苑县| 荆州市| 宜君县| 刚察县| 新化县| 马关县| 滁州市| 肃宁县| 株洲县|