将可空的自定义类作为参数传递

时间:2019-09-21 23:22:05

标签: c# nullable

给我的印象是,如果我将一个类作为引用传递给函数,则该引用可以为空。

示例:我有一个代码优先的实体类/数据库表:

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 个答案:

答案 0 :(得分:4)

默认情况下,所有引用类型都可以为空,您无需添加?修饰符。来自docs

  

基础类型T可以是任何非空值类型。 T不能是引用类型。

因此您的代码应为:

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

C#的下一版本,即版本8将引入nullable reference types,您将需要在每个项目的基础上启用选项,但这将允许您具有不可为空的引用类型。