考虑流动的代码片段C#匿名值类型性质
static void Main()
{
var x = new MyStruct
{
Item = new StringWrapper("abc")
};
Console.WriteLine(x.Item.PublicField);
x.Item.SetValue("xyz");
Console.WriteLine(x.Item.PublicField);
var y = new
{
Item = new StringWrapper("abc")
};
Console.WriteLine(y.Item.PublicField);
y.Item.SetValue("xyz");
Console.WriteLine(y.Item.PublicField);
}
public struct MyStruct
{
public StringWrapper Item;
}
public struct StringWrapper
{
public string PublicField;
public StringWrapper(string v)
{
PublicField = v;
}
public void SetValue(string v)
{
PublicField = v;
}
}
和输出:
ABC
XYZ
ABC
ABC
MYSTRUCT可以声明为类,输出将保持不变。 {abc,abc}输出的一部分对我来说是一个惊喜,因为我期望匿名类型被转换为类或结构,并且行为相同。
我觉得我错过了一些明显的东西,并会很感激任何帮助。
谢谢。
http://stackoverflow.com/questions/18292087/accessing-and-changing-structs-as -property-vs-as-field,你可以通过搜索找到更多解释 - https://www.bing.com/search?q=c%23+struct+field+vs+property –
'class StringWrapper'将解决它。不得不提的是,匿名类型的属性只读 –