C# &引用;“可选”;参数,何时重载以及何时使用可为空的类型?

C# &引用;“可选”;参数,何时重载以及何时使用可为空的类型?,c#,C#,由于使类型可为null本质上使变量“可选”,我想知道什么时候应该在方法参数中使用可为null的类型,以便在使用重载时使它们成为可选的?我创建了一些与数据库交互的方法,在那里使用可为null的类型更容易。例如,如果您有一个要向其传递参数的存储过程,那么如果您有两个重载版本的insert方法,则代码看起来几乎相同。使用可为null的类型可以避免在重载中重复自己 编辑:如果您喜欢使用重载,但仍然不想重复代码,您也可以让一个内部函数来完成这项工作,并将重载用于公共方法。我创建了一些与数据库交互的方法,在

由于使类型可为null本质上使变量“可选”,我想知道什么时候应该在方法参数中使用可为null的类型,以便在使用重载时使它们成为可选的?我创建了一些与数据库交互的方法,在那里使用可为null的类型更容易。例如,如果您有一个要向其传递参数的存储过程,那么如果您有两个重载版本的insert方法,则代码看起来几乎相同。使用可为null的类型可以避免在重载中重复自己


编辑:如果您喜欢使用重载,但仍然不想重复代码,您也可以让一个内部函数来完成这项工作,并将重载用于公共方法。

我创建了一些与数据库交互的方法,在这些方法中,使用可空类型更容易。例如,如果您有一个要向其传递参数的存储过程,那么如果您有两个重载版本的insert方法,则代码看起来几乎相同。使用可为null的类型可以避免在重载中重复自己


Edit:如果您喜欢使用重载,但仍然不想重复代码,您还可以让一个内部函数来完成这项工作,并将重载用于公共方法。

我不会-您将得到大量的
null、null、null
。在C#4.0中,有可选参数和命名参数;再等几个月,并考虑使用它们。在此之前,重载或传递表示参数的对象:

SearchOptions options = new SearchOptions {
     Key = 123, Name = "abc"
     // but 27 other properties we **haven't** set
}
Search(options);

我不会-你会得到很多
null,null,null
。在C#4.0中,有可选参数和命名参数;再等几个月,并考虑使用它们。在此之前,重载或传递表示参数的对象:

SearchOptions options = new SearchOptions {
     Key = 123, Name = "abc"
     // but 27 other properties we **haven't** set
}
Search(options);

您仍然需要显式地将null包含为参数,因此它实际上不是可选的。这很烦人,重载是目前为止最好的方法。

您仍然需要显式地将null包含为参数,因此它不是真正的可选方法。这很烦人,重载是目前为止最好的方法