bop*_*bop 0 c# struct properties
为什么以下代码不起作用?如果我h从一个属性更改为一个字段,它就可以了!或者,如果我改变FileHeader来自struct于class它的作品!我只是在找一个为什么它不起作用的答案.
public class MyFile
{
public struct FileHeader
{
public List<string> ColNames
{
get;
set;
}
public void setColNames()
{
ColNames = new List<string>();
ColNames.Add("address");
}
}
public FileHeader h
{
get;
set;
}
}
public class Program
{
static void Main(string[] args)
{
MyFile o = new MyFile();
o.h.setColNames();
Console.WriteLine(o.h.ColNames[0]); // <- Doesn't work! No elements
string line = System.Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
这一行:
o.h.setColNames();
Run Code Online (Sandbox Code Playgroud)
相当于:
FileHeader tmp = o.h;
tmp.setColNames();
Run Code Online (Sandbox Code Playgroud)
因为FileHeader是结构,值tmp是该字段值的副本o.修改tmp不会改变o.h.
我会建议:
h和方法setColNames都违反了这一点