Ответ 1
Попробуйте сделать это при вызове метода:
getBookInfo (bookId ?? "TBD", bookName ?? "TBD", bookAuthor ?? "TBD");
Тернарный оператор ?:
является отходом, когда вы можете использовать оператор нулевой коалесценции ??
.
Мне нужно передать несколько параметров в функции. Мое требование - значение параметра не должно быть 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");
Тернарный оператор ?:
является отходом, когда вы можете использовать оператор нулевой коалесценции ??
.
Просто поместите условие 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...
}