C#中类的成员


1. 类的成员
类中的数据和函数都称为类的成员。类的成员可以分为两类:
•类本身所声明的。
•从基类中继承来的。
如果在类声明中没有指定基类,则该类将继承System.Object类的所有成员。

2. 成员的类别
类的成员有以下几种类别:

注:C#中的类成

员可以是任意类型,包括数组和集合。
英文中 “字段”是英文单词“Field”,有时会被翻译成“域”,和“字段”是同一概念。

3. 类的成员的访问级别
•public:声明为公有成员,访问不受限制。公有成员提供了类的外部界面,允许类的使用者从外部进行访问。
•protected:声明为受保护成员,只能访问包含类或从包含类派生的类。受保护成员对于外界是隐藏的。
•internal:声明为内部成员,只能访问当前程序集。
•protected internal:声明为受保护的内部成员,只能访问当前程序集或从包含类派生的类。
•private:声明为私有成员,只有该类中的成员可以访问。如果在声明中没有设置成员的访问修饰符,成员会被默认为private。

使用代码示例来说明

public class People        //类名 
{ 
    private static string name;    //字段 
 
    private string sex;//字段 
 
    public string Sex     //属性 
    { 
        get { return sex; } 
        set { sex = value; } 
    } 
 
    public static string Name    //属性 
    { 
        get { return People.name; } 
        set { People.name = value; } 
    } 
 
    private People(){} //构造函数 
 
    public static string GetName()    // 函数 
    {  
        if (string.IsNullOrEmpty(name)) 
        { 
            name = "my name"; 
        } 
        return name; 
    }  
}

 

以上所有的构造函数、事件、字段、方法和属性都叫做成员,即Member
运行下列代码:

        Type t = typeof(People); 
             Console.WriteLine("----------------Method------------------"); 
             MethodInfo[] methods = t.GetMethods( ); 
            foreach (MethodInfo method in methods) 
            { 
                Console.WriteLine("Method:" + method); 
 
                //Console.WriteLine(method); 
                //Console.WriteLine("返回值:" + method.ReturnParameter); 
            } 
            Console.WriteLine("---------------Field-------------------"); 
            FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance|BindingFlags.Static); 
 
            foreach (FieldInfo field in fields) 
            { 
                Console.WriteLine("Field:" + field); 
            } 
 
            Console.WriteLine("--------------Member--------------------"); 
            MemberInfo[] members = t.GetMembers(); 
 
            foreach (MemberInfo member in members) 
            { 
                Console.WriteLine("Member:" + member); 
            } 
            Console.WriteLine("--------------Property--------------------"); 
            PropertyInfo[] properties = t.GetProperties( ); 
 
            foreach (PropertyInfo property in properties) 
            { 
                Console.WriteLine("Property:" + property); 
            } 
            Console.WriteLine("--------------Constructor--------------------"); 
            ConstructorInfo[] constructors = t.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance); 
 
            foreach (ConstructorInfo constructor in constructors) 
            { 
                Console.WriteLine("Constructor:" + constructor); 
            }     

输出结果为:

----------------Method------------------ 

Method:System.String get_Sex()
Method:Void set_Sex(System.String)
Method:System.String get_Name()
Method:Void set_Name(System.String)
Method:System.String GetName()
Method:System.String ToString()
Method:Boolean Equals(System.Object)
Method:Int32 GetHashCode()
Method:System.Type GetType()
---------------Field-------------------
Field:System.String sex
Field:System.String name
--------------Member--------------------
Member:System.String get_Sex()
Member:Void set_Sex(System.String)
Member:System.String get_Name()
Member:Void set_Name(System.String)
Member:System.String GetName()
Member:System.String ToString()
Member:Boolean Equals(System.Object)
Member:Int32 GetHashCode()
Member:System.Type GetType()
Member:System.String Sex
Member:System.String Name
--------------Property--------------------
Property:System.String Sex
Property:System.String Name
--------------Constructor--------------------
Constructor:Void .ctor()
请按任意键继续. . .


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM