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

leo*_*ora 3 c# variables inheritance protected

我有以下类层次结构

 public class Third : Second
{
}

public class Second : First
{
}

public class First
{
     private int MyVariable;
}
Run Code Online (Sandbox Code Playgroud)

如果我想从Second和Third访问MyVariable,我可以使MyVariable受到保护,但如果我想从Second而不是Third访问该怎么办.那可能吗?

Eri*_*ert 13

如果我要访问MyVariableSecondThird我能做出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!
}
Run Code Online (Sandbox Code Playgroud)

这是另一个:

// 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!
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 8

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

你说每个人Third都是Second.但是您希望每个Second人都可以访问变量,但您不希望任何Third人拥有访问权限.

但如果Third没有访问权限,那就不是了Second!