gpt4 book ai didi

具有硬编码 getter 和 setter 的 C# 属性

转载 作者:太空狗 更新时间:2023-10-29 22:10:50 25 4
gpt4 key购买 nike

我有一个属性定义为...

public List<Obj> Objs { get; set; }

我希望能够做的是将一些逻辑放入 get 方法中,所以它看起来像...

public List<Obj> Objs
{
get
{
if (Objs == null)
{
Objs = new List<Obj>();
}
if (Objs.Count < 1)
{
Objs.Add(new Obj());
}
return Objs;
}
set { Objs = value; }
}

现在,当我这样做时,我收到一条错误消息,告诉我该函数在所有路径上都是递归的。

有没有办法在不创建私有(private)支持字段的情况下做到这一点?

最佳答案

必须创建一个私有(private)字段:

    private List<Obj> _objs;
public List<Obj> Objs
{
get
{
if (_objs== null)
{
_objs= new List<Obj>();
}
if (_objs.Count < 1)
{
_objs.Add(new Obj());
}
return _objs;
}
set { _objs= value; }
}

为什么不可能?让我们用 Java 做同样的事情:

    private List<Obj> objs;
public List<Obj> getListObjs()
{
...
// Recursion
return getListObjs();
}

关于具有硬编码 getter 和 setter 的 C# 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885868/

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