【发布时间】:2017-05-02 21:25:06
【问题描述】:
在 C# 中,可以像这样定义一个公共静态只读字段:
namespace MyNamespace
{
public static class MyClass
{
public static readonly string MyValue = "Test";
}
}
在F#中,我能想到的最符合上述定义的代码是:
namespace MyNamespace
module MyClass =
[<Literal>]
let MyValue = "Test"
但这实际上转换为以下 C# sn-p:
namespace MyNamespace
{
public static class MyClass
{
public const string MyValue = "Test";
}
}
如何在 F# 中定义公共静态只读字段? const 不适合我,因为我想work with different assemblies。
【问题讨论】:
-
为什么不直接编写 C# 代码并在 F# 中使用编译后的代码,例如 stackoverflow.com/questions/3901805/…?
-
为什么特别需要只读字段?为什么你不能直接删除
Literal属性并在那里有一个正常的 let-bound 值(它编译为一个 getter-only 属性)? -
两个选项(使用 C#,删除 Literal 属性)都是完全可行的,我只是想知道我是否遗漏了一些允许我直接在 F# 中执行此操作的内容。