Передача нулевой альтернативы перегрузке - PullRequest
1 голос
/ 22 марта 2012

Есть ли способ передать нулевое значение параметру в 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
}

Если бы я мог передать нулевое значение для DepartmentId, я бы мог избежать этой перегрузки и позволить sp справиться с этим.

Cheers !!

Ответы [ 4 ]

2 голосов
/ 22 марта 2012

Вы можете использовать дополнительные параметры, однако вам нужно будет использовать int? (Nullable<int> вместо int):

public static DataTable GetUsers(int companyId, int? departmentId = null){
   //Return a DataTable of users in the given company & dept
}
1 голос
/ 22 марта 2012
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";
}

Надеюсь, это поможет.

1 голос
/ 22 марта 2012

Вы можете использовать Необязательные аргументы , например:

public static DataTable GetUsers(int companyId, int? departmentId=null){
   //Return a DataTable of users in the given company & dept
}
0 голосов
/ 22 марта 2012

Вы можете использовать Nullable int для DepartmentId.

public static DataTable GetUsers(int companyId, int? departmentId)

или

public static DataTable GetUsers(int companyId, Nullable<int> departmentId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...