Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将可为null的自定义类作为参数传递_C#_Nullable - Fatal编程技术网

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?
是用来擦擦我额头的。嗯。现在我觉得自己很愚蠢:)。谢谢,拍我的额头。嗯。现在我觉得自己很愚蠢:)。非常感谢。