传递null作为short类型的值?

3

我有以下方法:

    //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?


1
以下是答案的参考链接:http://msdn.microsoft.com/zh-cn/library/1t3y8s4s(v=vs.110).aspx - Inisheer
1
顺便说一下:try/catch是一个非常糟糕的做法。当您从此方法获得-1时,您将不知道问题出在哪里。只需完全删除try/catch即可。 - John Saunders
5个回答

9

使用 Nullable 类型作为

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

EmployeeDefaultNumWeek 属性也必须为 Nullable


根据 .NET 的版本,这可以扩展为 defaultNumWeek 成为可选参数,允许用户传递 null 什么都不传递。 - yoozer8

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

}

或者

static void Bar(short? s)
{

}

前者只是一种简写形式,详见使用可空类型


3

将定义更改为:

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

这能让你在省略defaultNumWeek参数时调用同一个函数。

0

如果它是null,就直接跳过不使用它。


0
你可以使用 可空类型 来处理这个问题。在 C# 中,你可以将问号(?)附加在结构类型(如 short)后面来创建一个别名。
这样就可以将其与 null 进行比较,询问是否有值等操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接