提问者:小点点

无法在不使用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
         }

共1个答案

匿名用户

在不使用新关键字的情况下调用结构内部的方法

只有在确保每个字段都已初始化(这导致整个都已初始化)的情况下,才能对结构调用方法。如果您还没有完全初始化任何字段,那么您将无法对它执行任何其他操作,正如您得到的错误消息所告诉您的那样。在使用属性设置器之前,您需要初始化所有字段,例如通过调用默认构造函数。