2

如何将 null 分配给 Delphi.net Nullable?我有一个以前包含值的字段,我需要将其值清除回 null。

depth : Nullable<Double>;

Procedure ClearDepth;
begin 
    depth := Nil;
end;

以上会产生错误Error: E2010 Incompatible types : 'Nullable<System.Double>' and 'Pointer'。using Nullin place of与in place ofNil给出相同的错误。我想知道我是否应该使用一个特殊的构造函数来生成一个可以为空的空值,但我在文档中看不到一个?VariantPointer

以下工作但似乎不是一个很好的解决方案,有人可以提出更好的方法吗?

Procedure ClearDepth;
var
    uninitialisedValue : Nullable<Double>;
begin 
    depth := uninitialisedValue;
end;
4

2 回答 2

3

你需要这个语法:

depth := Default(Nullable<Double>);
于 2011-10-18T14:46:26.333 回答
1

类型Nullable<T>struct. 这意味着它有一个公共的无参数构造函数。在这种类型的情况下,这就是代表的值null。在 C# 中,您将使用:

new Nullable<Double>()

在 C# 中获得相同值的另一种方法是

default(Nullable<Double>)

在这两种情况下,我都不知道 Delphi 的语法。在第二种情况下,我不知道这样的东西是否可以在那里表示。

编辑:显然,您可以在 Delphi 中使用第二个版本,但不等同于第一个版本。这对我来说非常令人惊讶。

于 2011-10-18T14:21:37.137 回答