2017-08-29 46 views
0

我在寻找一个功能:传递 “?新的INT()” 作为参数

public void foo(int? id) { 
... 
} 

叫这样的:

foo(new int?()); 

这到底是怎么回事?什么是当它传递新INT ID里面的函数的值?()?它不会出现是任何东西 - 该函数将它用于SQL存储过程,为此,我可以在跟踪中看到它正在作为空值传递。我期待这个存储过程被调用一个明确的,实际的整数,我想知道为什么这个代码可能没有指定一个,除非有什么我不了解这个。

+0

'INT第二构造?'是*空整型*。你基本上将'null'传递给你的函数,并想知道为什么它不是一个数字。如果你想传递一个数字,为​​什么不是? – Amy

+0

程序对该值做了什么?将它插入表中? –

+0

@Amy嗯,我说“可能” - 我基于“我在看一个函数”这个提示和整个问题的措辞做出假设。但我承认,但我可能是错的。 – Fildor

回答

2

快捷方式/语法糖当它传递新的INT的功能是什么里面的id的值()?

new int?()是类型为nullable int的无参数构造函数的调用。如果您没有传入任何值,它将具有默认值null。有可以采取的int号作为参数,并对其进行初始化new int?(23)

如果你想看到的构造函数中详细介绍了如何工作,看看在source code

2

int?是简写Nullable<int>,所以这样的:

new int?()

实际上是通过null