【发布时间】:2017-03-22 18:44:29
【问题描述】:
如果不使用 new 关键字来初始化结构,我无法为结构内的属性赋值。如果我尝试为该属性分配一个值,我会收到以下错误。但是我可以为公共变量分配一个值,或者在没有 new 关键字的情况下调用结构内的方法。我试图找到这种行为的原因。请帮忙。
错误:使用未分配的局部变量“pd2”
struct P
{
public int i;
public int j;
public string e;
public string Name { get; set; }
public void Showi()
{
Console.WriteLine(string.Format("Display i:{0}",this.i));
}
}
static void Main(string[] args)
{
P pd2;
pd2.i = 1;
pd2.j = 1;
pd2.e = "test";
pd2.Name = "abc"; //This is a property, shows error here
}
【问题讨论】:
-
请注意,这对于
struct来说是真的糟糕的设计。你应该避免像瘟疫这样的可变结构,并确保它们是不可变的。 -
@Servy,谢谢!我知道这是一个糟糕的设计,出于好奇和学习目的,我这样做了,我试图弄清楚为什么我不能为结构中的属性赋值。你的回答很有道理,谢谢!