【问题标题】:Unable to assign a value to a property inside a struct without using new keyword不使用 new 关键字无法为结构内的属性赋值
【发布时间】: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,谢谢!我知道这是一个糟糕的设计,出于好奇和学习目的,我这样做了,我试图弄清楚为什么我不能为结构中的属性赋值。你的回答很有道理,谢谢!

标签: c# .net struct


【解决方案1】:

在结构内部调用方法而不使用 new 关键字

如果您确保每个字段都已初始化(这会导致整个struct 被初始化),您只能在结构上调用方法。如果您尚未完全初始化该字段,那么您将无法对其执行任何其他操作,因为您收到的错误消息正在告诉您。您需要先初始化所有字段,然后才能使用该属性设置器,例如通过调用默认构造函数。

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2013-08-03
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2016-11-05
    • 2023-03-30
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多