考慮流動的代碼片段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'將解決它。不得不提的是,匿名類型的屬性只讀 –