C# 在不使用new关键字的情况下,无法为结构内的属性赋值
如果不使用新关键字初始化结构,我无法为结构内的属性赋值。如果我试图给属性赋值,我会得到以下错误。但是我可以给公共变量赋值,或者在结构内部调用一个方法,而不需要新的关键字。我正试图找到这种行为的原因。请帮忙 错误:使用未分配的局部变量“pd2” 不使用新关键字在结构内调用方法 只有在确保每个字段都已初始化(这将导致整个C# 在不使用new关键字的情况下,无法为结构内的属性赋值,c#,.net,struct,C#,.net,Struct,如果不使用新关键字初始化结构,我无法为结构内的属性赋值。如果我试图给属性赋值,我会得到以下错误。但是我可以给公共变量赋值,或者在结构内部调用一个方法,而不需要新的关键字。我正试图找到这种行为的原因。请帮忙 错误:使用未分配的局部变量“pd2” 不使用新关键字在结构内调用方法 只有在确保每个字段都已初始化(这将导致整个struct被初始化)的情况下,才能对结构调用方法。如果尚未完全初始化每个字段,则无法对其执行任何其他操作,因为收到的错误消息告诉您。您需要初始化所有字段,然后才能使用该属性设置器,
struct
被初始化)的情况下,才能对结构调用方法。如果尚未完全初始化每个字段,则无法对其执行任何其他操作,因为收到的错误消息告诉您。您需要初始化所有字段,然后才能使用该属性设置器,例如通过调用默认构造函数
不使用新关键字在结构内调用方法
只有在确保每个字段都已初始化(这将导致整个
struct
被初始化)的情况下,才能对结构调用方法。如果尚未完全初始化每个字段,则无法对其执行任何其他操作,因为收到的错误消息告诉您。在使用该属性设置程序之前,您需要初始化所有字段,例如通过调用默认构造函数。请注意,对于结构而言,这是非常糟糕的设计。您应该避免像瘟疫一样的可变结构,并确保它们是不可变的。@Servy,谢谢!我知道这是一个糟糕的设计,我这样做是出于好奇和学习的目的,我试图找出为什么我不能为结构中的属性赋值。你的回答很有道理,谢谢!注意,对于struct
,这是非常糟糕的设计。您应该避免像瘟疫一样的可变结构,并确保它们是不可变的。@Servy,谢谢!我知道这是一个糟糕的设计,我这样做是出于好奇和学习的目的,我试图找出为什么我不能为结构中的属性赋值。你的回答很有道理,谢谢!
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
}