类变量只在类外部读取,并且在其中完全访问

时间:2016-08-31 06:32:47

标签: c#

假设我班上有一个结构:

class MyClass 
{
    public struct MyStruct_t
    {
        public int someValue1;
        public int someValue2;
    }
    public MyStruct_t MyStruct;
    public InitStructure()
    {
        MyStruct.someValue1 = 1;
        MyStruct.someValue2 = 1;
    }
}

我希望这个结构只能从外部读取,并在类中读/写。像这样:

MyClass cls = new MyClass();
cls.InitStructure();
int value = cls.MyStruct.someValue1;
cls.MyStruct.someValue2 = value; // here must be an error

我想它应该类似于C ++中的friend关键字。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

public int someValue1 { get; protected set; } public int someValue2 { get; protected set; }

这可能就是你要找的东西。 protected关键字使得set操作在声明类以及派生类中可用,但在其他上下文中则不可用。

答案 1 :(得分:0)

你可以这样做:

class MyClass
{
    internal struct MyStruct_t
    {
        public readonly int someValue1;
        public readonly int someValue2;
        public MyStruct_t(int i, int j)
        {
            someValue1 = i;
            someValue2 = j;
        }
    }
    public MyStruct_t MyStruct;
    public void InitStructure()
    {
        MyStruct = new MyStruct_t(1, 1);
    }
}

但你无法从MyClass更改someValueX。也许这可以帮到你:https://stackoverflow.com/a/14650082/6479770