生活工作学习点滴

导航

 

可能大家都知道在C#中如何创建一个类,但对于类的结构可能大家不一定了解的很清楚,对于我来说,我之前也搞的不是很明白,今天,当我没事研究反射的时候突然发现了着一点。

我们来看类的结构到底是什么

 

1.            public class People        //类名 

2.           

3.                private static string name;    //字段 

4.             

5.                private string sex;//字段 

6.             

7.                public string Sex     //属性 

8.                { 

9.                    get { return sex; } 

10.                set { sex = value; } 

11.            } 

12.         

13.            public static string Name    //属性 

14.            { 

15.                get { return People.name; } 

16.                set { People.name = value; } 

17.            } 

18.         

19.            private People() //构造函数 

20.            { 

21.         

22.            } 

23.         

24.            public static string GetName()    // 函数 

25.            { 

26.         

27.                if (string.IsNullOrEmpty(name)) 

28.                { 

29.                    name = "my name"

30.                } 

31.                return name; 

32.         

33.         

34.            } 

35.         

36.         

37.       

以上所有的构造函数、事件、字段、方法和属性都叫做成员,即Member

运行下列代码:

 

1.            Type t = typeof(People); 

2.                         Console.WriteLine("----------------Method------------------"); 

3.                         MethodInfo[] methods = t.GetMethods( ); 

4.                        foreach (MethodInfo method in methods) 

5.                        { 

6.                            Console.WriteLine("Method:" + method); 

7.             

8.                            //Console.WriteLine(method); 

9.                            //Console.WriteLine("返回值:" + method.ReturnParameter); 

10.                    } 

11.                    Console.WriteLine("---------------Field-------------------"); 

12.                    FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance|BindingFlags.Static); 

13.         

14.                    foreach (FieldInfo field in fields) 

15.                    { 

16.                        Console.WriteLine("Field:" + field); 

17.                    } 

18.         

19.                    Console.WriteLine("--------------Member--------------------"); 

20.                    MemberInfo[] members = t.GetMembers(); 

21.         

22.                    foreach (MemberInfo member in members) 

23.                    { 

24.                        Console.WriteLine("Member:" + member); 

25.                    } 

26.                    Console.WriteLine("--------------Property--------------------"); 

27.                    PropertyInfo[] properties = t.GetProperties( ); 

28.         

29.                    foreach (PropertyInfo property in properties) 

30.                    { 

31.                        Console.WriteLine("Property:" + property); 

32.                    } 

33.                    Console.WriteLine("--------------Constructor--------------------"); 

34.                    ConstructorInfo[] constructors = t.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance); 

35.         

36.                    foreach (ConstructorInfo constructor in constructors) 

37.                    { 

38.                        Console.WriteLine("Constructor:" + constructor); 

39.                    } 

 

输出结果为:

 

1.            ----------------Method------------------ 

2.            Method:System.String get_Sex() 

3.            Method:Void set_Sex(System.String) 

4.            Method:System.String get_Name() 

5.            Method:Void set_Name(System.String) 

6.            Method:System.String GetName() 

7.            Method:System.String ToString() 

8.            Method:Boolean Equals(System.Object) 

9.            Method:Int32 GetHashCode() 

10.        Method:System.Type GetType() 

11.        ---------------Field------------------- 

12.        Field:System.String sex 

13.        Field:System.String name 

14.        --------------Member-------------------- 

15.        Member:System.String get_Sex() 

16.        Member:Void set_Sex(System.String) 

17.        Member:System.String get_Name() 

18.        Member:Void set_Name(System.String) 

19.        Member:System.String GetName() 

20.        Member:System.String ToString() 

21.        Member:Boolean Equals(System.Object) 

22.        Member:Int32 GetHashCode() 

23.        Member:System.Type GetType() 

24.        Member:System.String Sex 

25.        Member:System.String Name 

26.        --------------Property-------------------- 

27.        Property:System.String Sex 

28.        Property:System.String Name 

29.        --------------Constructor-------------------- 

30.        Constructor:Void .ctor() 

31.        请按任意键继续. . . 

另外,我们发现属性SexName编译以后变成了get_Sex,get_Name,set_Sex,set_Name,呵呵,看来还是更java一样
posted on 2010-10-12 17:00  舒正义  阅读(9005)  评论(0编辑  收藏  举报