C#訪問修飾符詳細(xì)剖析
本文向大家介紹C#訪問修飾符,可能好多人還不了解修飾符,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
C#訪問修飾符
C#訪問修飾符與 Java 大致相同,我們將在這一部分介紹其中的一些細(xì)微差別。每個類成員或類本身都可以用C#訪問修飾符進行聲明,以定義許可訪問的范圍。沒有在其他類中聲明的類只能指定 public 或 internal 修飾符,而嵌套的類(如其他的類成員)可以指定下面五個修飾符中的任何一個:
◆public:對所有類可見
◆protected:僅從派生類中可見
◆private:僅在給定的類中可見
◆internal:僅在相同的程序集中可見
◆protected internal:僅對當(dāng)前的程序集或從包含類中派生的類型可見
1.public、protected 和 private 修飾符
public 修飾符使得可以從類內(nèi)外的任何地方訪問成員。protected 修飾符表示訪問僅限于包含類或從它派生的類。private 修飾符意味著只可能從包含類型中進行訪問。
2.internal 修飾符
internal 項只可以在當(dāng)前的程序集中進行訪問。.NET 中的程序集大致等同于 Java 的 JAR 文件,它表示可以從中構(gòu)造其他程序的生成塊。
3.protected internal 修飾符
protected internal 項僅對當(dāng)前程序集或從包含類派生的類型可見。默認(rèn)C#訪問修飾符是 private,而 Java 的默認(rèn)C#訪問修飾符是包范圍。
4.sealed 修飾符
在其類聲明中帶有 sealed 修飾符的類可以認(rèn)為是與抽象類完全相反的類:它不能被繼承。我們可以將一個類標(biāo)記為 sealed,以防止其他類重寫它的功能。自然地,sealed 類不能是抽象的。同時還需要注意,該結(jié)構(gòu)是隱式密封的;因此,它們不能被繼承。sealed 修飾符相當(dāng)于在 Java 中用 final 關(guān)鍵字標(biāo)記類。
5.readonly 修飾符
要在 C# 中定義常量,我們可以使用 const 或 readonly 修飾符替換 Java 的 final 關(guān)鍵字。在 C# 中,這兩個修飾符之間的區(qū)別在于,const 項是在編譯時處理的,而 readonly 字段是在運行時設(shè)置的。這可以允許我們修改用于在運行時確定 readonly 字段值的表達(dá)式。
這意味著給 readonly 字段的賦值可以出現(xiàn)在類構(gòu)造函數(shù)及聲明中。例如,下面的類聲明了一個名為 IntegerVariable 的 readonly 變量,它是在類構(gòu)造函數(shù)中初始化的:
- using System;
- public class ReadOnlyClass
- {
- private readonly int IntegerConstant;
- public ReadOnlyClass ()
- {
- IntegerConstant = 5;
- }
- // We get a compile time error if we try to set the value of the readonly
- //class variable outside of the constructor
- public int IntMember
- {
- set
- {
- IntegerConstant = value;
- }
- get
- {
- return IntegerConstant;
- }
- }
- public static void Main(string[] args)
- {
- ReadOnlyClass obj= new ReadOnlyClass();
- // We cannot perform this operation on a readonly field
- obj.IntMember = 100;
- Console.WriteLine("Value of IntegerConstant field is {0}",
- obj.IntMember);
- }
- }
【編輯推薦】