c# - 在自动生成的属性中实例化对象

标签 c#

<分区>

有没有一种方法可以自动实例化一个对象而无需在构造函数中实例化它?

实际上,我有这样的东西:

public List<Object> Products { get; set; }
public MyClass()
{
    this.Products = new List<Object>();
}

但是,我想直接实例化我的列表,而不用在我的类的构造函数中指定类似的东西:

public List<Object> Products = new List<Object>(); { get; set; }

有什么技巧可以做到这一点吗?

最佳答案

我想您是在问是否可以为自动实现的属性赋予初始值。这个问题的答案是“否”。

不过您可以编写一个手动属性:

private List<Product> products = new List<Product>();

public List<Product> Products
{
    get { return products; }
    set { this.products = value; }
}

你真的需要二传手吗?您是否需要客户端能够用另一个列表替换变量值?你可能会发现你只需要一个只读属性,在这种情况下你可以这样写:

private readonly List<Product> products = new List<Product>();

public IList<Product> Products { get { return products; } }

请注意,在这里您仍然可以使用集合初始值设定项,例如

Foo foo = new Foo
{
    Products = { new Product("foo"), new Product("bar") }
};

关于c# - 在自动生成的属性中实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840345/

相关文章:

c# - 如何使用 AMD Display Library (ADL) Overdrive State Set 功能(以编程方式超频)

C# 如何创建没有类定义的对象?

c# - 正则表达式 '\b' 的 T-SQL 等效项

c# - 多列数据转换

c# - 字符串类型和字符串类型有什么区别? (首字母大写)

c# - 如何绑定(bind) ComboBox 以便 displaymember 是源数据表的 2 个字段的 concat?

c# - Input.touchCount 不起作用

c# - 在 setter 中确定调用者——或静默设置属性

c# - 无法转换名单

C#:WPF MVVM 中的按钮绑定(bind)