【发布时间】:2012-09-18 00:15:35
【问题描述】:
这是一个简单的 C# 结构,它对 ctor 参数进行一些验证:
public struct Foo
{
public string Name { get; private set; }
public Foo(string name)
: this()
{
Contract.Requires<ArgumentException>(name.StartsWith("A"));
Name = name;
}
}
我已设法将其转换为 F# 类:
type Foo(name : string) =
do
Contract.Requires<ArgumentException> (name.StartsWith "A")
member x.Name = name
但是,我无法将其转换为 F# 中的结构:
[<Struct>]
type Foo =
val Name : string
new(name : string) = { do Contract.Requires<ArgumentException> (name.StartsWith "A"); Name = name }
这会产生编译错误:
记录、序列或计算表达式无效。序列表达式应该是 形式'seq { ... }'
这不是一个有效的对象构造表达式。显式对象构造函数必须 调用备用构造函数或初始化对象的所有字段并指定 调用超类构造函数。
我哪里做错了?
【问题讨论】: