给我的印象是,如果我将一个类作为引用传递给函数,则该引用可以为空。
示例:我有一个代码优先的实体类/数据库表:
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)
但这并不能解决问题。
任何指针将不胜感激。
答案 0 :(得分:4)
默认情况下,所有引用类型都可以为空,您无需添加?
修饰符。来自docs:
基础类型T可以是任何非空值类型。 T不能是引用类型。
因此您的代码应为:
public static void Function1 (int? i, Table1 t)
C#的下一版本,即版本8将引入nullable reference types,您将需要在每个项目的基础上启用选项,但这将允许您具有不可为空的引用类型。