gpt4 book ai didi

c# - 这两种类型的属性(property)声明之间的根本区别是什么?

转载 作者:行者123 更新时间:2023-11-30 18:59:13 25 4
gpt4 key购买 nike

以下两个声明之间的主要区别是什么?

public string Name
{
get { return "Settings"; }
}

public const string Name = "Settings";

难道两者都不能被改变吗?

最佳答案

第一个是只提供 get 访问器的属性。这是每个实例指定的。

第二个是编译时间常量。在编译时,它将被替换为 "Settings",因此它根本不是该类型的真正成员。

const 声明确实具有消除方法调用的优势(因为它只是一个编译时常量值),但是,属性调用可能会在运行时被 JIT 消除。

属性声明的优点是允许您稍后更改它的工作方式,而不会破坏兼容性 - 甚至是二进制兼容性。为了看到 const 值的变化,需要对使用它的所有内容进行完整的重新编译,即使它在单独的程序集中也是如此。

基本上,public const 可能是个好主意,但前提是这是一个永远不会改变的值——而不是在运行时永远不会改变的值程序的一部分,但无论何时何地都不会改变。 Int32.MaxValue 是一个很好的例子 - 它具有基于 Int32 类型本身的特定含义 - 这永远不会改变。因此,它作为一个 public const 是有意义的。在您的情况下,"Settings" 可能是您最终想要更改的内容 - 如果是这种情况,那么将它封装在一个属性中是有意义的。

关于c# - 这两种类型的属性(property)声明之间的根本区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979073/

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