GetType()與typeof比較

  • 833
  • 0

GetType()與typeof比較

typeof是運算子,無法多載

而GetType是方法

參考文件:https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/typeof

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            Type myType = typeof(Math);
            Console.WriteLine("======================typeof===================");
            Console.WriteLine("Math 類別匯出組件名稱: \n {0}", myType.Assembly);
            Console.WriteLine("Math 類別所屬命名空間: {0}", myType.Namespace);
            Console.WriteLine("Math 類別完整名稱: {0}", myType.FullName);
            Console.WriteLine();


            Type my2Type = Type.GetType("System.Math");
            Console.WriteLine("======================GetType===================");
            Console.WriteLine("Math 類別匯出組件名稱: \n {0}", my2Type.Assembly);
            Console.WriteLine("Math 類別所屬命名空間: {0}", my2Type.Namespace);
            Console.WriteLine("Math 類別完整名稱: {0}", my2Type.FullName);
            Console.WriteLine();

            MethodInfo[] myMIS = myType.GetMethods();
            Console.WriteLine("================================================");
            Console.WriteLine("以下列出所有 Math 類所提供的方法名稱: ");

            foreach (MethodInfo myMI in myMIS)
            {
                Console.WriteLine("{0} ", myMI);
            }

            MethodInfo[] my2MIS = my2Type.GetMethods();
            Console.WriteLine("================================================");
            Console.WriteLine("以下列出所有 Math2 類所提供的方法名稱: ");

            foreach (MethodInfo myMI2 in my2MIS)
            {
                Console.WriteLine("{0} ", myMI2);
            }

            int radius = 3;
            Console.WriteLine("================================================");
            Console.WriteLine("Area = {0}", radius * radius * Math.PI);
            Console.WriteLine("The type is {0}",
                              (radius * radius * Math.PI).GetType()
                     );

            Console.ReadLine();
        }
    }
}