我需要在函数中传递多个参数。我的要求是参数值不应该为NULL。如果 参数为NULL pass" TBD"代替。
e.g。
getBookInfo (string bookId, string bookName, string bookAuthor)
//if any of the parameters is NULL, pass "TBD" string in parameter
我该怎么做?我可以使用三元运算符执行此操作,如果是,如何执行此操作?
答案 0 :(得分:17)
在调用方法时尝试这样做:
getBookInfo (bookId ?? "TBD", bookName ?? "TBD", bookAuthor ?? "TBD");
当您可以使用空合并运算符?:
时,三元运算符??
是一种浪费。
答案 1 :(得分:2)
只需在此函数中添加if
条件并检查这三个变量的null
值,如果找到null
,则可以在if
之后立即分配默认值检查然后继续执行。
这样的事情:
getBookInfo (string bookId, string bookName, string bookAuthor)
{
bookId = (bookId == "" ) ? bookId : "TBD";
// other variables same way.
}
希望这可以解决它。
答案 2 :(得分:1)
使用三元就像:
getBookInfo (bookId == null ? "TBD" : bookId, bookName == null ? "TBD" : bookName, bookAuthor == null ? "TBD" : bookAuthor)
但我认为阅读不太清楚......
答案 3 :(得分:0)
在传递参数之前检查参数是否为null。例如
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"如果任何字段的值为null。希望它能解决你的问题。感谢
答案 4 :(得分: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
}
答案 5 :(得分: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...
}