1. 程式人生 > >c# --- 泛型解決輸入和輸出型別不確定問題

c# --- 泛型解決輸入和輸出型別不確定問題

一、背景

有這樣一個需求:一個方法,他的返回值型別不確定,方法引數的型別不做要求。

二、思考

返回值型別不確定,從繼承的角度,所以類都是object的子類,返回object即可。但是這種方法是型別不安全的,需要進行型別轉換。
我們可以使用泛型解決這個問題。我理解的泛型就是一類型別,或者相當於一個型別集合。

三、具體方案


        public static T GetValueBy<T>(T input)
        {
            return input;
        }
        public static object
GetValue(object input ) { return input; }
        static void Main(string[] args)
        {
            int a = (int)GetValue(1);
            bool b = (bool)GetValue(true);
            string c = (string)GetValue("string");


            int d = GetValueBy(1);
            bool
e = GetValueBy(true); string f = GetValueBy("string"); Console.WriteLine($"a:{a.ToString()}"); Console.WriteLine($"b:{b.ToString()}"); Console.WriteLine($"c:{c.ToString()}"); Console.WriteLine($"d:{d.ToString()}"); Console.WriteLine($"e:{e.ToString()}"
); Console.WriteLine($"f:{f.ToString()}"); Console.ReadKey(); }

四、總結

1.泛型可以用來解決不確定型別的問題。

2.泛型可以避免拆箱和裝箱的過程。

3.泛型強制VS進行型別檢查,避免執行時型別出錯。

五、github地址

程式碼下載