带字符串字段的记录是否可以在C#中接受null?

时间:2014-05-04 17:20:28

标签: f#

例如,如果我有一条记录,例如:

type sample = { userId : string; }

然后我在C#中定义此记录,例如:

var samp = new sample()
                    {
                       userId = null;
                    };

然后如果我将此记录分配给在C#中调用的F#函数会发生什么?这合法吗?我只需要在F#函数中检查是否为null,或者这是不可能的?

1 个答案:

答案 0 :(得分:1)

是的,通常,任何引用类型都可以为null。 F#编译器阻止对F#特定类型的空分配,例如F#代码中的记录和区分联合。但是,仍然可以从C#中为这些类型的变量赋值null。

String是一种引用类型,即使是F#也可以为null。您的C#代码稍微不准确,因为类型sample在构造函数中会有userId

var samp = new sample(null);

如果您注释sample类型为CLIMutable attribute,那么它也将具有无参数构造函数。