2017-08-29 43 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