Как назначить «ноль» для Delphi.net Nullable - PullRequest
2 голосов
/ 18 октября 2011

Как назначить значение NULL для Delphi.net Nullable? У меня есть поле, которое ранее содержало значение, мне нужно очистить его значение до нуля.

depth : Nullable<Double>;

Procedure ClearDepth;
begin 
    depth := Nil;
end;

Вышеуказанное создает ошибку Error: E2010 Incompatible types : 'Nullable<System.Double>' and 'Pointer'. использование Null вместо Nil дает ту же ошибку с Variant вместо Pointer. Я задавался вопросом, должен ли я использовать специальный конструктор для генерации пустого значения, но я не смог увидеть его в документации?

Следующее работает, но не кажется отличным решением, кто-нибудь может предложить лучший способ?

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

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Вам нужен этот синтаксис:

depth := Default(Nullable<Double>);
1 голос
/ 18 октября 2011

Тип Nullable<T> является struct. Это означает, что у него есть открытый конструктор без параметров. В случае этого типа это значение представляет null. В C # вы бы использовали:

new Nullable<Double>()

Другой способ получить то же значение в C # будет

default(Nullable<Double>)

В обоих случаях я не знаю синтаксис Delphi. Во втором случае я не знаю, можно ли там представить что-то подобное.

РЕДАКТИРОВАТЬ: По-видимому, вы можете использовать в Delphi вторую версию, но не эквивалентную первой. Это довольно удивительно для меня.

...