2013-01-15 59 views
3

我有以下方法:傳遞null爲空?

//returns -1 on failure 
    public static int Add(
     string name, string email, string password, short defaultNumWeek) 
    { 
     KezberPMDBDataContext db = new KezberPMDBDataContext(); 
     Employee employee = new Employee 
     { 
      EmployeName = name, 
      EmployeEmail = email, 
      EmployePassword = password, 
      DefaultNumWeek = defaultNumWeek 
     }; 
     db.Employees.InsertOnSubmit(employee); 
     try 
     { 
      db.SubmitChanges(); 
     } 
     catch (Exception) 
     { 
      return -1; 
     } 

     return employee.EmployeID; 
    } 

最後一個參數是可選的,可以在數據庫空。我怎樣才能做到這一點,而不創建2個單獨的方法我有其他的不那麼簡單。我如何將基類型傳遞爲null?

+1

參考下面的答案:http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.110).aspx – Inisheer

+1

參考:try/catch是一個非常糟糕的做法。當你從這個方法中得到-1時,你將不知道問題是什麼。完全刪除try/catch。 –

回答

9

使用Nullable類型Employee桅杆

public static int Add(
     string name, string email, string password, short? defaultNumWeek) 

DefaultNumWeek財產是Nullable了。

+0

根據.NET的版本,這可以擴展爲'defaultNumWeek'是一個可選參數,允許用戶傳遞null *或*不傳遞任何東西。 – yoozer8

3
static void Bar(Nullable<short> s) 
{ 

} 

static void Bar(short? s) 
{ 

} 

前者僅僅是一個短期的手,看到Using Nullable Types

0

只是通過它,如果它爲空不使用它。

0

您可以使用Nullable Types來處理此問題。 C#有一個別名,它將一個問號(?)附加到一個結構類型(如簡稱)。

這允許您將其與空值進行比較,詢問它是否具有值等等。

3

更改定義:

public static int Add(
     string name, string email, string password, short? defaultNumWeek = null) 

這使您可以調用相同的功能,但省略了defaultNumWeek參數。