gpt4 book ai didi

c# - 如何在 C# 中创建只读对象属性?

转载 作者:太空狗 更新时间:2023-10-30 00:12:05 26 4
gpt4 key购买 nike

如下所示,用户可以更改只读产品字段/属性:

class Program
{
static void Main(string[] args)
{
var product = Product.Create("Orange");
var order = Order.Create(product);
order.Product.Name = "Banana"; // Main method shouldn't be able to change any property of product!
}
}

public class Order
{
public Order(Product product)
{
this.Product = product;
}

public readonly Product Product;

public static Order Create(Product product)
{
return new Order (product);
}
}

public class Product
{
private Product(){}

public string Name { get; set; }

public static Product Create(string name)
{
return new Product { Name = name };
}
}

我认为这很基本,但似乎并非如此。

如何在 C# 中创建只读对象属性或字段?!

谢谢,

最佳答案

readonly 关键字阻止您将新实例放入该字段。

它不会神奇地使字段内的任何对象不可变。
如果你写,你期望发生什么

readonly Product x = Product.Create();

Product y;
y = x;
y.Name = "Changed!";

如果你想要一个不可变的对象,你需要通过删除所有公共(public) setter 使类本身不可变。

关于c# - 如何在 C# 中创建只读对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7675205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com