如何为Delphi.net Nullable分配null?我有一个先前包含值的字段,我需要将其值清除为null。
depth : Nullable<Double>;
Procedure ClearDepth;
begin
depth := Nil;
end;
以上创建错误Error: E2010 Incompatible types : 'Nullable<System.Double>' and 'Pointer'
。使用Null
代替Nil
会导致Variant
代替Pointer
时出现同样的错误。我想知道我是否应该使用特殊的构造函数来生成null null,但我在文档中看不到一个?
以下有效,但似乎不是一个很好的解决方案,任何人都可以提出更好的方法吗?
Procedure ClearDepth;
var
uninitialisedValue : Nullable<Double>;
begin
depth := uninitialisedValue;
end;
答案 0 :(得分:3)
您需要以下语法:
depth := Default(Nullable<Double>);
答案 1 :(得分:1)
Nullable<T>
类型是struct
。这意味着它有一个公共无参数构造函数。在这种类型的情况下,这是代表null
的值。在C#中,您将使用:
new Nullable<Double>()
在C#中获得相同值的另一种方法是
default(Nullable<Double>)
在这两种情况下,我都不知道Delphi的语法。在第二种情况下,我不知道这样的事情是否可以在那里表现出来。
编辑:显然,您可以在Delphi中使用第二个版本,但不能与第一个版本相同。这对我来说非常令人惊讶。