我有一个包含具有以下方法的类的代码:
public string AddEvent(DateTime date, int eventCount, int? eventId, string eventGuid){...}
我的问题是那里的问号是什么?我的猜测它与重载有关,因为有AddEvent
的另一种重载方法,但我不确定......
答案 0 :(得分:10)
很简单,这不是C ++代码。它是C#,其中?
表示nullable value type。即值类型也可以是null
。 int?
是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++;
}