C# 当使用常量和文字时,什么是好的实践?

C# 当使用常量和文字时,什么是好的实践?,c#,coding-style,constants,C#,Coding Style,Constants,我正在编写一个应用程序,我想确保在常量和文字方面有一个良好的编码标准。问题是,我不完全确定我应该在哪里使用常量,在哪里使用常量只是过火了!例如 public class MyWindow : Window { public const string WindowTitle = "This seems like overkill!"; public MyWindow() : base() { this.Title = WindowTitle; }

我正在编写一个应用程序,我想确保在常量和文字方面有一个良好的编码标准。问题是,我不完全确定我应该在哪里使用常量,在哪里使用常量只是过火了!例如

public class MyWindow : Window
{
    public const string WindowTitle = "This seems like overkill!";

    public MyWindow() : base()
    {
        this.Title = WindowTitle;
    }
}

所以我的问题是,什么是最广泛接受的标准来决定什么应该被宣布为常数,什么不应该被宣布为常数?我猜想只在一个地方使用的任何内容都应该是文字(例如窗口的标题),多次使用的任何内容都应该是常量?

const
字段存储在assembly metatada中。在某些其他程序集中引用程序集时,
const
字段的值将直接复制到引用程序集中

因此,如果您决定更改
const
字段,则必须重新编译引用它的所有程序集才能看到更改

例如,如果在Assembly1中有:

public class Class1
{
    public const string ConstString = "Const";
}
并在Assembly2中引用它:

class Class2
{
    void DoSomething()
    {
        Console.WriteLine(Class1.ConstString);
    }
}

Class1.ConstString
将在编译时替换为常量值(
“Const”
)。

常量用于表示常量变量,帮助编译器进行优化,并帮助程序员不更改不需要更改的内容


因为在这个主题上没有广泛使用的规范,所以您需要决定您希望编写的代码有多完美以及项目的大小。我认为最好的做法是尽可能使用
const
。通常情况下,这不会成为一个问题,在编程风格方面,这是一个好的编码实践。

我认为没有一个好的答案,至少在SO规则范围内是这样。没有办法衡量“最广泛接受的”,因此答案是主观的。我个人认为你的想法(一次使用与多次使用)很有道理。
WindowTitle
是否会改变?如果不是,
const
是可以接受的。在您的示例中,我可能会说
const
是一种过激的行为,但要确定知道,就需要知道其余的假设代码。如果保持
const
,我可能会将
WindowTitle
标记为
private
。谢谢@AndreyShchekin。我意识到可能没有正确或错误的答案,但我想知道是否有一些经验法则可以指导我。尽管我想的这个想法确实有道理,但它似乎打破了整个“神奇数字”的概念。例如,我的主窗口有一个“LinearGradientBrush”,它使用2种颜色作为背景,我无法决定是否应该将这些颜色声明为常量(使用“public static readonly”),或者是否应该避免这样做以减少代码膨胀。