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