gpt4 book ai didi

c# - const 值会按实例存储吗?

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

对于这样的类型:

public class BlurEffect
{
public const string Name = "Blur";

public int Amount {get;set;}
}

我有一些像 .Name 这样的成员,所有成员都是一样的,我应该改为静态吗?

我只是不希望它按实例存储,或者使用不必要的资源,它们也应该是只读的。

最后,我想要它的实例访问权限,所以我可以说:

blurEffect.Name

我应该创建一个返回私有(private)静态变量的 Name 属性吗?这是最好的方法吗?

最佳答案

在 C# 中,常量实际上是在编译时解析的。它们将被编译器在任何地方使用的值替换,因此“变量”(Name) 实际上不会存在于生成的编译 IL 中。

字符串常量,另外,得到interned ,所以只有一个“Blur”副本将加载到您的可执行文件中,无论它被使用了多少次。

就个人而言,我会使用私有(private)常量和公共(public)变量:

public class BlurEffect
{
private const string name = "Blur";
public string Name { get { return name; } }

public int Amount {get;set;}
}

这让您获得了基于实例的用法,并且仍然有一个您可以操作的常量。

关于c# - const 值会按实例存储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964345/

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