对于这样的类型:
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/