天天看點

動态類型

using System;
using static System.Console;
namespace Dynamic1
{
    class Program
    {
        static void Main(string[] args)
        {
            object obj = 10;
            WriteLine(obj.GetType());
            //使用object類型此時需要強制類型轉換,不能編譯器會出現編譯錯誤
            obj = (int)obj + 10;


            dynamic a = 400;
            WriteLine(a.GetType());
            // 對于動态類型而言,編譯時編譯器根本不知道它是什麼類型,
            // 是以編譯器就判斷不了a的類型了,是以下面的代碼不會出現編譯時錯誤
            // 因為a有可能是int類型,編譯器不知道該變量的具體類型不能憑空推測類型
            // 當然也就不能提示我們編譯時錯誤了
            a += 100;

            WriteLine(Add(a,a));
            ReadKey();
        }

        static dynamic Add(dynamic a,dynamic b)
        {
            return a + b;
        }

        static Tresult AddS<T1, T2, Tresult>(T1 left,T2 right,Func<T1,T2,Tresult> AddMethod )
        {
            return AddMethod(left, right);
        }
    }

}      

繼續閱讀