传递null为空?

时间:2013-01-15 21:02:53

标签: c# .net

我有以下方法:

    //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;
    }

最后一个参数是可选的,在数据​​库中可以为null。如何在不创建两个单独方法的情况下执行此操作?我还有其他不那么简单的东西。如何将基类型传递为null?

5 个答案:

答案 0 :(得分:9)

Nullable类型用作

public static int Add(
        string name, string email, string password, short? defaultNumWeek)
<DefaultNumWeek Employee Nullable的属性{{1}}也属于{{1}}。

答案 1 :(得分:3)

static void Bar(Nullable<short> s)
{

}

static void Bar(short? s)
{

}

前者只是一个简短的手,见Using Nullable Types

答案 2 :(得分:3)

将定义更改为:

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

这允许您在省略defaultNumWeek参数的同时调用相同的函数。

答案 3 :(得分:0)

只要传递它,如果它为空则不要使用它。

答案 4 :(得分:0)

您可以使用Nullable Types处理此问题。 C#有一个别名,您可以在其中将问号(?)附加到结构类型(如short)。

这允许您将其与null进行比较,询问它是否具有值等等。