我需要传递函数中的多个参数。我的要求是参数值不应该是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