繁体   English   中英

c# 中的不可变结构

[英]Immutable structure in c#

我有如下代码:

struct Name
{

private int age;

public int Age
{
  get
  {
    return age;
  }
  set
  {
    age = Age;
  }
}
public Name(int a)
{
  age = a;
}

};

  class Program
  {
    static void Main(string[] args)
    {
      Name myName = new Name(27);
      Console.WriteLine(myName.Age);
      myName.Age = 30;
      Console.WriteLine(myName.Age);
    }
  }

如您所见,我正在尝试使用我的属性更改 Age 的值。 但是当我创建结构名称的 object 时,我得到的值仍然相同。 我知道结构在 C# 中是不可变的,但我认为我可以更改其中的字段。 我很困扰。 有人可以解释一下发生了什么吗?

C# 中的结构默认情况下不是不可变的。 要将结构标记为不可变,您应该在结构上使用readonly 修饰符 您的属性未更新的原因是您的语法错误。 您应该使用value关键字来取消引用提供给 setter 的

public int Age
{
  get
  {
    return age;
  }
  set
  {
    age = value;          // <-- here
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM