gpt4 book ai didi

c# - 属性 : private method or private get/set?

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:00 24 4
gpt4 key购买 nike

如果我想在一个类中设置我的属性私有(private),那么应该只能在这个类中使用和设置这个属性,什么是更好的方法?这个

public string Name { private get; private set }

private string Name { get; set }

嗯,还有

private string Name { private get; private set }

最佳答案

值得注意的是,最初,C# 不允许您对 getter 或 setter 设置不同的访问权限,因此唯一可能的选择是:

public string Name { get; set; }
protected internal string Name { get; set; }
internal string Name { get; set; }
protected string Name { get; set; }
private string Name { get; set; }

(就此而言,您不能拥有自动属性,并且总是必须自己向后备字段写入和从后备字段写入,但我们将忽略它,因为我们将以这种方式提供较短的示例)。

对两者进行不同的访问通常很有用,通常是 setter 比 getter 更具限制性,等等

public string Name { get; private set; }

被介绍了。

现在,通过扩展,这似乎合乎逻辑地允许:

public string Name { private get; private set; }
private string Name { private get; private set; }

然而,这两个表达的是什么?

第二个还不错,只是不必要的重复。尽管如此,很可能是一些困惑的想法让我们走到了那里(很可能是不完整的重构)。好的代码既要表达你正在做的事情,也要表达让计算机做某事(如果有的话,甚至更多),最好让它表达清楚。

因此,如果您最终得到 { private get;私有(private)集; } 那么它可能值得再看一遍并考虑一下你真正想在这里说什么。欢呼它是一个编译器错误。

第一种情况更糟。它说“这个属性是公共(public)的,除了私有(private)的 setter 和私有(private)的 getter”。那也不异常(exception),“就是这个东西,除了所有的时间”并不是什么真实的表达。双重欢呼编译器不让我们这样做。

关于c# - 属性 : private method or private get/set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252805/

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