我需要一些澄清,究竟你的意思是「特定的類」 ......但我希望我在正確的解釋,你只需要一個類的實例是能夠調用該方法。
public class A
{
private int number;
private void setNumber(int Number)
{
number = Number;
}
}
在這種情況下,A類的任何實例可以調用方法:
A myAinstance = new A();
myAinstance.setNumber(5);
但是,您將無法指A.setNumber(),就好像它是一個靜態的方法 - 與實例無關。
如果只想派生類(從任何組件),才能稱之爲:
public class A
{
private int number;
protected void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
在這種情況下,B類的任何實例或 A可以調用setNumber(),但沒有其他班級可以看到或訪問它。
如果你只是想在同一組件內的所有實例類可以稱之爲:
public class A
{
private int number;
internal void setNumber(int Number)
{
number = Number;
}
}
在這種情況下,相同的組件類中的任何類「A」將能夠調用setNumber()就好像它是一個公共屬性一樣,但其他程序集中不包含的類將能夠看到它或引用它。在VB.NET中,內部與「朋友」相同。
如果你只是想在同一組件內的派生類能夠調用它:
public class A
{
private int number;
protected internal void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
在這種情況下,B類或一個無論組件的任何實例可以看到和參考setNumber( );並且與A類相同的程序集中的任何類將能夠看到它或引用它,就好像它是公共的。
我認爲這涵蓋了每個選項...
你爲什麼要防範這種方法的深層原因是什麼?安全,用戶權利,還有其他什麼? – mdma 2010-06-02 16:23:53
你能否澄清一下可以調用它的情況?即當你說「特定的類」時,該類是從A類派生的,它會與A類在同一個程序集中,還是隻會是類A的實例? – BenAlabaster 2010-06-02 16:33:06
你可能想看看這個問題基本上是一樣的: http://stackoverflow.com/questions/1609472/friend-class-with-limited-access – n1ckp 2010-06-02 16:38:15