2011-03-11 57 views
5

假設我有3個類,即:Class1,Class2和class3。 Class3有一個變量var3類變量C#

是否有可能var3(來自Class3)只能被Class1訪問,而不能被Class2或任何其他類訪問?

回答

8

提到的,除了那些另一種選擇:

public class Class3 
{ 
    private int var3; 

    public class Class1 
    { 
     public void ShowVar3(Class3 instance) 
     { 
      Console.WriteLine(instance.var3); 
     } 
    } 
} 

哪個選項是正確的一個將取決於您的上下文。我認爲無論你做什麼,你幾乎肯定不應該直接嘗試訪問另一個班級的變量 - 但所有這些也適用於成員,這更合適。

+0

也許我應該改變我的問題....它應該是一個屬性而不是變量。 – yonan2236 2011-03-11 07:36:45

+0

@ yonan2236:對,雖然完全一樣的原則將適用。 – 2011-03-11 07:41:21

+0

+1:我同意它不應該是一個變量。 – Divi 2011-03-11 07:42:17

3

如果您VAR3保護的CLASS3並class1的距離CLASS3繼承它會工作

編輯,當它的屬性

如:

public class Class3 
{ 
    protected int Var3 {get;set;} 
} 


public class Class2 
{ 
} 


public class Class1 : Class3 
{ 
    //access Var3 here 
} 
6

Class1Class3在同一個程序集中,並使內部成爲Class3。然後它只對相同程序集內的其他類可見。

+1

這可能是OP的問題的正確答案,+1。但是OP或許應該使用繼承或接口來重新考慮他們的方法,而不是使用非OOP方式的「權限管理」。 – Bazzz 2011-03-11 07:45:28

+0

@Bazzz - 我完全同意你在這裏。在OP的架構中有一些尷尬的地方。 – 2011-03-11 07:47:46