2015-05-25 35 views
15

我需要傳遞函數中的多個參數。我的要求是參數值不應該是NULL。如果 參數爲NULL,則傳遞「TBD」。如果參數值爲空,則傳遞字符串

例如

getBookInfo (string bookId, string bookName, string bookAuthor) 
//if any of the parameters is NULL, pass "TBD" string in parameter 

我該怎麼做?我可以使用三元運算符來做到這一點嗎?如果是這樣,怎麼辦?

+6

'參數? 「TBD」' – PetSerAl

+0

您可以指定默認值的參數,如果你可以改變的定義, 的BookInfo getBookInfo(字符串BOOKID = 「TBD」,串BOOKNAME = 「TBD」,串BOOKAUTHOR = 「TBD」) – Adil

+0

如果每次調用該函數時都應用「TBD」要求,那麼我就不會將它放在調用中:我將它放在函數的主體中。像HarveySpecter的答案一樣。如果由於某種原因它只適用於這個特定的調用,而在其他情況下,空值是好的 - 這對我來說似乎不太可能,但我不知道您的要求 - 那麼Enigmativity的答案就是要走的路。 – Jay

回答

17

嘗試調用您的方法時,做這種方式:

getBookInfo (bookId ?? "TBD", bookName ?? "TBD", bookAuthor ?? "TBD"); 

當您可以使用空合併運算符??時,三元運算符?:是一種浪費。

+0

當參數是class屬性時,如何將「TBD」傳遞給NULL,即假設ClassName.classProperty作爲參數傳遞。請解釋。 – user4221591

+0

@ user4221591 - 如果你有新的問題,你應該這樣發佈。但是,如果你只是問你是否可以做'ClassName.classProperty ?? 「待定」,那麼答案是肯定的。 – Enigmativity

2

只要把if條件這個函數內,並檢查這三個變量的值null如果發現null,您可以在if檢查後立即分配默認值,然後繼續進一步執行。

事情是這樣的:

getBookInfo (string bookId, string bookName, string bookAuthor) 
{ 
    bookId = (bookId == "") ? bookId : "TBD"; 
    // other variables same way. 
} 

希望這會清除它。

1

使用三元它會像:

getBookInfo (bookId == null ? "TBD" : bookId, bookName == null ? "TBD" : bookName, bookAuthor == null ? "TBD" : bookAuthor) 

但我認爲這不是很清楚閱讀...

0

在傳遞參數之前,檢查參數是否爲空。例如

string bookid; 
string bookName; 
string bookAuthor; 
if(bookid==null) 
bookid="TBD"; 
if(bookName==null) 
bookName="TBD"; 
if(bookAuthor==null) 
bookAuthor="TBD"; 
getBookInfo (string bookId, string bookName, string bookAuthor) 

如果任何字段的值爲空,這將設置值「TBD」。希望它解決了你的問題。謝謝

0
private void GetBookInfo(string bookId, string bookName, string bookAuthor) 
     { 
      // if any of the parameter is NULL, set "TBD" as the value 
      bookId = bookId == null ? "TBD" : bookId; 
      bookName = bookName == null ? "TBD" : bookName; 
      bookAuthor = bookAuthor == null ? "TBD" : bookAuthor; 

      // rest of the code goes here 
     } 
0

您還可以提供方法的重載,允許開發人員提供有限數量的參數。重載將調用帶有附加參數的方法,該參數爲尚未包含的參數傳遞默認值。

public void GetBookInfo (string bookID) 
{ 
    // Call overload passing bookID and empty string as book name 
    return GetBookInfo(bookId, string.Empty); 
} 

public void GetBookInfo (string bookID, string bookName) 
{ 
    // Call overload passing bookID, bookName and empty string as author 
    return GetBookInfo(bookId, bookName, string.Empty); 
} 

public void GetBookInfo (string bookID, string bookName, string author) 
{ 
    // All 3 parameters are populated here, get the book info... 
} 
相關問題