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

标签 c# .net static constants

对于这样的类型:

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/

相关文章:

c++ - MacOS X- C++ 中的段错误 11

c# - 如何使用自动化脚本在一天中的不同时间测试我的 Web 应用程序的性能?

c# - 在 Ubuntu 环境中使用 MonoDevelop 将 C# 代码交叉编译为 Colibri iMX6 (Linux) exe

c# - C# JITter 能否优化重复的委托(delegate)调用?

objective-c - 我可以有一个弱静态指针吗?

c++ - 在 C++ 中创建全局静态的多个实例?

c# - 需要按特定顺序执行的方法应该是私有(private)的吗?

c# - 类及其嵌套类的一个构造函数

.net - Microsoft Sync Framework 2.1 - 示例项目、编写提供程序、更改跟踪、元数据

c# - Azure Blob 存储 Blob 是否支持随机访问流?