Передача пользовательских классов Nullable в качестве параметров - PullRequest
1 голос
/ 22 сентября 2019

У меня сложилось впечатление, что если я передам класс функции в качестве ссылки, эта ссылка может быть обнуляемой.

Пример: у меня есть код класса первичной сущности / таблица базы данных:

public class Table1
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int FillID { get; set; }
    public int OrderID { get; set; }
    public int FillQuantity { get; set; }
    public DateTime TransactionDateTime { get; set; }
    public virtual tblInstruments tblInstruments { get; set; }
 }

Я бы хотел создать функцию со следующей подписью:

public static void Function1 (int? i, Table1? t)

Table1? t выдает ошибку:

только неОбнуляемый тип значения может лежать в основе System.Nullable

Так что я не уверен, что делаю неправильно.Я попытался

public static void Function1 (int? i, ref Table1? t)

Но это не помогло решить проблему.

Буду признателен за любые указатели.

1 Ответ

4 голосов
/ 22 сентября 2019

Все ссылочные типы по умолчанию обнуляются, вам не нужно добавлять модификатор ?.Из документов :

Базовым типом T может быть любой необнуляемый тип значения.T не может быть ссылочным типом.

Таким образом, ваш код должен быть:

public static void Function1 (int? i, Table1 t)

Следующая версия C #, версия 8, представит обнуляемые ссылочные типы вам нужно будет включить опцию для каждого проекта, но это позволит вам иметь необнуляемые ссылочные типы.

...