C#基礎-可訪問性-public、ptotected、protected internal、internal、private

1.類型的可訪問性工具

 

a.關鍵字有public、internal,其中public表示該類型對於程序集均可見、internal表示該類型僅對當前程序集可見。此處的類型能夠爲類、接口、結構等。spa

 

b.若是不顯式指定類型的訪問行,internal爲類型的默認值。code

 

c.友元程序集接口

應用場景:公司的TeamA在程序集中定義了一組工具類型(UtilityType),可訪問性爲internal,公司的TeamB但願在另外的程序集使用這些類型。ci

若是直接將工具類型修改成public,其它使用TeamA程序集的團隊或者公司就能夠修改和使用UtilityType中的類型,這顯示是不合理的。it

可否將UtilityType定義internal,可是TeamB仍是可以使用它們呢?table

使用InternalsVisibleTo的Attribute,TeamB便可自由使用TeamA中的UtilityTypeclass

using System.Runtime.CompilerServices; 

//當前程序集的UserGroup類型可由TeamB的任何代碼訪問
[assembly: InternalsVisibleTo("TeamB")]
namespace TeamA
{
    class UtilityType
    {

    }
}
 
2.成員的可訪問性
public 全部程序集、全部方法均可以訪問

protected  internal程序

當前程序集或者派生類中可用

protected方法

派生類可用(可在不一樣程序集)
interna 當前程序集可用

private

當前類可用
 
a.任何成員想要被訪問,都須要在可見的類型內定義。好比說AssemblyA中定義了一個internal類型,該類型有一個public方法。AssemblyB中就不能使用AssemblyA中的這個public方法。由於internal類型對AssemblyB不可用。
 
b.成員的默承認訪問性爲private
 
c.接口成員的可訪問性不須要手工指定,默認爲public
 
d.C#規定重寫方法的可訪問性必須跟基類方法的可訪問性相同,訪問限制更寬鬆都不行。
相關文章
相關標籤/搜索