我已经阅读了各地const
和static readonly
各个领域.我们有一些只包含常量值的类.用于我们系统中的各种事物.所以我想知道我的观察结果是否正确:
这些常量值是否应始终static readonly
适用于所有公开的内容?并且仅const
用于内部/受保护/私有值?
您有什么推荐的吗?我是否可能甚至不使用static readonly
字段,而是使用属性?
刚看到一个教程说:
Class Dog
{
private string Name;
}
Class SuperDog:Dog
{
private string Mood;
}
Run Code Online (Sandbox Code Playgroud)
然后有一个UML显示SuperDog也会继承Name.我试过但似乎只有公共成员才能继承.至少我无法访问Name,除非它被声明为public.
我正在寻找一个关于如何创建类似枚举类的最佳实践,而不是数字包含字符串值.像这样的东西:
public static class CustomerType
{
public static string Type1 = "Customer Type 1";
public static string Type2 = "Customer Type 2";
}
Run Code Online (Sandbox Code Playgroud)
我会在整个应用程序中使用此类作为我需要CustomerType的所有情况的值.我不能使用Enum,因为这是遗留系统,这样的值在任何地方都是硬编码的,我只是想把它们集中在一个地方.
在上面的示例中,问题是我应该用于声明变量:
设置这些类和值的最佳做法是什么?
在 C# 中,可以像这样定义一个公共静态只读字段:
namespace MyNamespace
{
public static class MyClass
{
public static readonly string MyValue = "Test";
}
}
Run Code Online (Sandbox Code Playgroud)
在 F# 中,我能想到的最符合上述定义的代码是:
namespace MyNamespace
module MyClass =
[<Literal>]
let MyValue = "Test"
Run Code Online (Sandbox Code Playgroud)
但这实际上转化为以下 C# 片段:
namespace MyNamespace
{
public static class MyClass
{
public const string MyValue = "Test";
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 F# 中定义公共静态只读字段?const
对我来说不是一个选择,因为我想使用不同的程序集。