2013-01-15 61 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参数。