如果参数值为null,则传递字符串

时间:2015-05-25 04:42:21

标签: c#

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

我该怎么做?我可以使用三元运算符执行此操作,如果是,如何执行此操作?

6 个答案:

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