有没有办法将空值传递给C#中的参数?
原因是我必须将一些sql参数作为空值(在存储过程中设置了默认值)传递给我的SQL数据库中的某些存储过程。我的代码是通过数据访问类接收数据。因此,我必须在数据访问类中进行大量的方法重载,以支持事件/方法背后的代码。实施例;
public static DataTable GetUsers(int companyId, int departmentId){
//Return a DataTable of users in the given company & dept
}
public static DataTable GetUsers(int companyId){
//Return a DataTable of users in the given company
}
如果我可以将null值传递给departmentId,我可以避免这种重载并让sp处理它。
干杯!!
答案 0 :(得分:2)
您可以使用可选参数,但是您需要使用int?
(Nullable<int>
代替int
):
public static DataTable GetUsers(int companyId, int? departmentId = null){
//Return a DataTable of users in the given company & dept
}
答案 1 :(得分:1)
您可以使用Optional arguments,如下所示:
public static DataTable GetUsers(int companyId, int? departmentId=null){
//Return a DataTable of users in the given company & dept
}
答案 2 :(得分:1)
int? myInt = null; //Nullable
int myInt; //Not nullable
在第一行myInt
中定义为Nullable
或Nullable of int
。它们是System.Nullable
结构的实例。 可以为空的类型可以表示其基础值类型的正常值范围,另外还有一个空值。
通过如上定义方法参数将允许传递空值。实施例;
string check1 = Method1(null); //"This deptId is NULL"
string check2 = Method1(1); //"This deptId is NOT NULL"
private string Method1(int? deptId)
{
return deptId != null ? "This deptId is NOT NULL" : "This deptId is NULL";
}
希望这有帮助。
答案 3 :(得分:0)
您可以为departmentId使用Nullable int。
public static DataTable GetUsers(int companyId, int? departmentId)
或
public static DataTable GetUsers(int companyId, Nullable<int> departmentId)