反正是否有变量“部分受保护”?

时间:2013-12-28 23:42:32

标签: c# variables inheritance protected

我有以下类层次结构

 public class Third : Second
{
}

public class Second : First
{
}

public class First
{
     private int MyVariable;
}

如果我想从Second和Third访问MyVariable,我可以使MyVariable受到保护,但如果我想从Second而不是Third进行访问会怎样。这可能吗?

2 个答案:

答案 0 :(得分:13)

  

如果我想从MyVariableSecond访问Third,我可以MyVariable受到保护。如果我想从Second但不是Third访问该怎么办?这可能吗?

是的!这是一种技巧:

class First
{
    private int myVariable;
    public class Second : First
    {
        public Second() { myVariable = 123; } // Legal!
    }
}

class Third : First.Second
{
    public Third() { myVariable = 456; } // Illegal!
}

这是另一个:

// Alpha.DLL
public class First 
{ 
    internal int myVariable;
}
public class Second : First
{
    public Second() { myVariable = 123; } // Legal!
}

// Bravo.DLL
class Third : Second
{
    public Third() { myVariable = 456; } // Illegal!
}

答案 1 :(得分:8)

你不是以面向对象的方式思考这个问题。

您声明每个Third都是Second。但是您希望每个Second都可以访问该变量,但您不希望任何Third具有访问权限。

但如果Third无权访问,那么它不是Second