【发布时间】:2018-02-07 02:54:15
【问题描述】:
我在看一个函数:
public void foo(int? id) {
...
}
像这样称呼:
foo(new int?());
这里发生了什么?传递new int?()时,函数内部id的值是多少?它似乎不是任何东西 - 该函数将它用于 SQL 存储过程,我可以在跟踪中看到它被作为 null 传递。我希望这个存储过程会被一个确定的、实际的整数调用,我想知道为什么这段代码可能没有指定一个,除非我对此不理解。
【问题讨论】:
-
int?是一个可为空的整数。您基本上是将null传递给您的函数,并想知道为什么它不是数字。如果你想传递一个数字,你为什么不呢? -
该过程如何处理该值?将其插入表中?
-
@Amy 好吧,我说“可能” - 我的假设基于“我正在查看一个函数”之类的提示和问题的整体措辞。但我承认,我可能是错的。
-
int?是Nullable<int>的语法糖。结构类型,使用新表达式来初始化结构,它是标准 C# 语法。大多数程序员更喜欢foo(null);以保持他们的代码可读性。 -
@Amy 没错——这不是我的代码。
标签: c#