C#中typeof 与GetType()的区别和methodinfo、memberinfo反射
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C#中typeof 与GetType()的区别和methodinfo、memberinfo反射
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                ? ??
? ? C#中任何對象都具有GetType()方法,它的作用和typeof()相同,返回Type類型的當前對象的類型。typeof(x)中的x,必須是具體的類名、類型名稱等,不可以是變量名稱;GetType()是基類System.Object的方法,因此只有建立一個實例之后才能夠被調用。?
 ????其實我也不會c#。。。我個人的理解就是GetType可以對實例化后的對象進行操作,而typeof則是對類本身進行操作。typeof是運算符,獲得某一類型的System.Type對象;GetType是方法,獲取當前實例的類型.
 
一、typeof?與GetType()的區別
1.Typeof是運算符而是方法
2.GetType()是基類System.Object的方法,因此只有建立一個實例之后才能夠被調用(初始化以后)
3.Typeof的參數只能是int,string,String,自定義類型,且不能是實例
4.GetType()和typeof都返回System.Type的引用.
5.TypeOf():得到一個Class的Type
6.GetType():得到一個Class的實例的Type
二、typeof?與GetType()的實例
namespace _2011._12._15 {class Program{static void Main(string[] args){Test testone = new Test(); //生成Test類實例testonestring s = testone.GetType().ToString(); //調用實例testone的GetType方法獲取Type信息 Console.WriteLine("GetType():");Console.WriteLine(s); //_2011._12._15.Test 命名空間的Test類Type type = typeof(Test); //調用typeof方法獲取Type信息,參數為類名Test Console.WriteLine("Typeof():");Console.WriteLine(type);//_2011._12._15.Test 命名空間的Test類Console.WriteLine();MethodInfo[] methodinfo = type.GetMethods();//獲取得到的type的methodinfo Console.WriteLine(methodinfo.GetType());//System.Reflection.MethodInfo[]foreach (var i in methodinfo){Console.WriteLine(i);//輸出Test類的所有方法及繼承Object的實例方法}Console.WriteLine();Console.WriteLine();Console.WriteLine();Console.WriteLine();/*結果GetType():_2011._12._15.TestTypeof():_2011._12._15.TestSystem.Reflection.MethodInfo[] //methodinfo的Type信息Void speaking() //Test類的自定義方法 speaking()Void writing() //Test類的自定義方法 writing() System.Type GetType() //繼承自Object 獲取System.RuntimeType的方法 System.String ToString() //繼承自Object 獲取當前對象的字符串表示的方法 Boolean Equals(System.Object) //繼承自Object 比較當前對象的方法 Int32 GetHashCode() //繼承自Object 返回當前對象的哈希值的方法 */MemberInfo[] memberinfo = type.GetMembers(); //獲取得到的type的memberinfoConsole.WriteLine(memberinfo.GetType());foreach(var i in memberinfo){Console.WriteLine(i);//輸出Test類字段和System.type類型}System.Reflection.MemberInfo[]/*結果Void speaking() //Test類的自定義方法 speaking() Void writing() //Test類的自定義方法 writing() System.Type GetType() //繼承自Object 獲取System.RuntimeType的方法 System.String ToString() //繼承自Object 獲取當前對象的字符串表示的方法 Boolean Equals(System.Object) //繼承自Object 比較當前對象的方法 Int32 GetHashCode() //繼承自Object 返回當前對象的哈希值的方法 Void .ctor() //構造函數System.String name //Test類的自定義變量name由于Test類中的age為private屬性,因此不會被得到*/}}class Test{private int age;public string name;public void speaking(){Console.WriteLine("Welcome to cnblog!");}public void writing(){Console.WriteLine("Please writing something!");}} }
 
總結
以上是生活随笔為你收集整理的C#中typeof 与GetType()的区别和methodinfo、memberinfo反射的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: GameObject数组逐渐消失
 - 下一篇: JavaCV免费教程大全(完整JavaC