C# 将可为null的自定义类作为参数传递
我的印象是,如果我将一个类作为引用传递给一个函数,那么该引用可以为空 示例:我有一个代码优先实体类/数据库表:C# 将可为null的自定义类作为参数传递,c#,nullable,C#,Nullable,我的印象是,如果我将一个类作为引用传递给一个函数,那么该引用可以为空 示例:我有一个代码优先实体类/数据库表: public class Table1 { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int FillID { get; set; } public int OrderID { get; set; } public int FillQuantity { get;
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)
表1?t
给出了a错误:
只有不可为Null的值类型可以是System.nullable的基础
所以我不确定我做错了什么。
我试过了
但这并没有解决问题
非常感谢任何指针。默认情况下,所有引用类型都可以为空,您不需要添加
?
修饰符。从:
基础类型T可以是任何不可为null的值类型。T不能是引用类型
因此,您的代码应该是:
public static void Function1 (int? i, Table1 t)
C#的下一个版本,第8版将引入,您需要在每个项目的基础上启用to选项,但这将允许您拥有不可为空的引用类型。默认情况下,所有引用类型都可为空,您不需要添加
?
修饰符。从:
基础类型T可以是任何不可为null的值类型。T不能是引用类型
因此,您的代码应该是:
public static void Function1 (int? i, Table1 t)
C#的下一个版本,第8版将引入,您需要在每个项目的基础上启用to选项,但这将允许您拥有不可为空的引用类型。默认情况下,所有引用变量都可以为空。它们可以接受空值。它是原语,默认情况下结构不可为null。阅读后,请看一看
T?
所指的代码,因为所有引用变量默认为空。它们可以接受空值。它是原语,默认情况下结构不可为null。读了这篇文章后,看看这段代码,T?
是用来擦擦我额头的。嗯。现在我觉得自己很愚蠢:)。谢谢,拍我的额头。嗯。现在我觉得自己很愚蠢:)。非常感谢。