Передайте строку, если значение параметра равно null

Мне нужно передать несколько параметров в функции. Мое требование - значение параметра не должно быть NULL. Если вместо этого параметр NULL передает "TBD".

например.

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

Как я могу это сделать? Могу ли я это сделать с помощью тройного оператора, и если да, то как?

Ответы

Ответ 1

Попробуйте сделать это при вызове метода:

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

Тернарный оператор ?: является отходом, когда вы можете использовать оператор нулевой коалесценции ??.

Ответ 2

Просто поместите условие if внутри этой функции и проверьте значения null этих трех переменных, и если найдено null, вы можете назначить значения по умолчанию сразу после проверки if, а затем продолжить дальнейшее выполнение.

Что-то вроде этого:

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

Надеюсь, что это очистит.

Ответ 3

Используя тройной, это будет выглядеть так:

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

но я думаю, что это не очень понятно читать...

Ответ 4

Перед тем, как передать параметр, проверьте, является ли параметр нулевым или нет. Например

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", если значение любого поля будет равно нулю. Надеюсь, он решил вашу проблему. Благодаря

Ответ 5

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
        }

Ответ 6

Вы также можете обеспечить перегрузку метода, который позволил бы разработчику предоставить ограниченное количество параметров. Перегрузка вызовет метод с дополнительными параметрами, передающими значения по умолчанию для параметров, которых он еще не имеет.

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...
}