问号'?'在方法的参数中给出

时间:2016-12-15 11:45:01

标签: c#

我有一个包含具有以下方法的类的代码:

public string AddEvent(DateTime date, int eventCount, int? eventId, string eventGuid){...}

我的问题是那里的问号是什么?我的猜测它与重载有关,因为有AddEvent的另一种重载方法,但我不确定......

2 个答案:

答案 0 :(得分:10)

很简单,这不是C ++代码。它是C#,其中?表示nullable value type。即值类型也可以是nullint?Nullable<int>的快捷方式。

答案 1 :(得分:0)

通常像int这样的简单类型不能为null,使用?允许int具有像对象一样的空值。

在函数内部,您需要检查eventId是否有效。您可以通过检查HasValue或等于null来执行此操作。如果您尝试在不检查的情况下使用它,并且它为null,那么它将抛出System.InvalidOperationException:

public string AddEvent(DateTime date, int eventCount, int? eventId, string eventGuid)
{
    // use HasValue
    if (eventId.HasValue)
        eventId++;

    // or check for null
    if (eventId != null)
        eventId++;
}