2017-06-06 63 views
0

我有以下方法調用,並且出於某種原因,C#中的語法無法正常工作。如果pkg.Library.description爲null,則將其設置爲一個字符串..「未選擇文件夾」。有沒有另一種方法來做到這一點?將可能爲空的參數傳遞給方法

SendEmail (pkg.libraryfolder.description == null ? "No Folder Selected" :pkg.libraryfolder.description) 

public void SendEmail(string folderdescription) 
{ 
//// 
} 

回答

1
SendEmail(pkg.libraryfolder.description ?? "No Folder Selected") 
1

我不知道爲什麼你所寫的內容是行不通的,但另一種方式來做到這一點是使用空合併運算符,用雙問號表示,像這樣:

var x = y ?? z

如果y不爲空,則將x設置爲y;如果y爲null,則將x設置爲z。

這是運營商的documentation

1

你不解釋爲什麼你的代碼不工作,它應該,我的猜測是要麼pkgs爲null或libraryfolder爲空。目前,您只是檢查描述是否爲空,如果其他任何事情都爲空,那麼這將是一個錯誤。因此,要解決這個問題,嘗試: -

SendEmail (pkg?.libraryfolder?.description == null ? "No Folder Selected" :pkg.libraryfolder.description) 

public void SendEmail(string folderdescription) 
{ 
//// 
} 

或使其更簡單通過使用

SendEmail (pkg?.libraryfolder?.description ?? "No Folder Selected");