我需要傳遞函數中的多個參數。我的要求是參數值不應該是NULL。如果 參數爲NULL,則傳遞「TBD」。如果參數值爲空,則傳遞字符串
例如
getBookInfo (string bookId, string bookName, string bookAuthor)
//if any of the parameters is NULL, pass "TBD" string in parameter
我該怎麼做?我可以使用三元運算符來做到這一點嗎?如果是這樣,怎麼辦?
我需要傳遞函數中的多個參數。我的要求是參數值不應該是NULL。如果 參數爲NULL,則傳遞「TBD」。如果參數值爲空,則傳遞字符串
例如
getBookInfo (string bookId, string bookName, string bookAuthor)
//if any of the parameters is NULL, pass "TBD" string in parameter
我該怎麼做?我可以使用三元運算符來做到這一點嗎?如果是這樣,怎麼辦?
嘗試調用您的方法時,做這種方式:
getBookInfo (bookId ?? "TBD", bookName ?? "TBD", bookAuthor ?? "TBD");
當您可以使用空合併運算符??
時,三元運算符?:
是一種浪費。
當參數是class屬性時,如何將「TBD」傳遞給NULL,即假設ClassName.classProperty作爲參數傳遞。請解釋。 – user4221591
@ user4221591 - 如果你有新的問題,你應該這樣發佈。但是,如果你只是問你是否可以做'ClassName.classProperty ?? 「待定」,那麼答案是肯定的。 – Enigmativity
只要把if
條件這個函數內,並檢查這三個變量的值null
如果發現null
,您可以在if
檢查後立即分配默認值,然後繼續進一步執行。
事情是這樣的:
getBookInfo (string bookId, string bookName, string bookAuthor)
{
bookId = (bookId == "") ? bookId : "TBD";
// other variables same way.
}
希望這會清除它。
使用三元它會像:
getBookInfo (bookId == null ? "TBD" : bookId, bookName == null ? "TBD" : bookName, bookAuthor == null ? "TBD" : bookAuthor)
但我認爲這不是很清楚閱讀...
在傳遞參數之前,檢查參數是否爲空。例如
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」。希望它解決了你的問題。謝謝
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
}
您還可以提供方法的重載,允許開發人員提供有限數量的參數。重載將調用帶有附加參數的方法,該參數爲尚未包含的參數傳遞默認值。
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...
}
'參數? 「TBD」' – PetSerAl
您可以指定默認值的參數,如果你可以改變的定義, 的BookInfo getBookInfo(字符串BOOKID = 「TBD」,串BOOKNAME = 「TBD」,串BOOKAUTHOR = 「TBD」) – Adil
如果每次調用該函數時都應用「TBD」要求,那麼我就不會將它放在調用中:我將它放在函數的主體中。像HarveySpecter的答案一樣。如果由於某種原因它只適用於這個特定的調用,而在其他情況下,空值是好的 - 這對我來說似乎不太可能,但我不知道您的要求 - 那麼Enigmativity的答案就是要走的路。 – Jay