假设我班上有一个结构:
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
关键字。我怎样才能做到这一点?
答案 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