2015-05-25 31 views
15

我需要传递函数中的多个参数。我的要求是参数值不应该是NULL。如果 参数为NULL,则传递“TBD”。如果参数值为空,则传递字符串

例如

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

我该怎么做?我可以使用三元运算符来做到这一点吗?如果是这样,怎么办?

+6

'参数? “TBD”' – PetSerAl

+0

您可以指定默认值的参数,如果你可以改变的定义, 的BookInfo getBookInfo(字符串BOOKID = “TBD”,串BOOKNAME = “TBD”,串BOOKAUTHOR = “TBD”) – Adil

+0

如果每次调用该函数时都应用“TBD”要求,那么我就不会将它放在调用中:我将它放在函数的主体中。像HarveySpecter的答案一样。如果由于某种原因它只适用于这个特定的调用,而在其他情况下,空值是好的 - 这对我来说似乎不太可能,但我不知道您的要求 - 那么Enigmativity的答案就是要走的路。 – Jay

回答

17

尝试调用您的方法时,做这种方式:

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

当您可以使用空合并运算符??时,三元运算符?:是一种浪费。

+0

当参数是class属性时,如何将“TBD”传递给NULL,即假设ClassName.classProperty作为参数传递。请解释。 – user4221591

+0

@ user4221591 - 如果你有新的问题,你应该这样发布。但是,如果你只是问你是否可以做'ClassName.classProperty ?? “待定”,那么答案是肯定的。 – Enigmativity

2

只要把if条件这个函数内,并检查这三个变量的值null如果发现null,您可以在if检查后立即分配默认值,然后继续进一步执行。

事情是这样的:

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

希望这会清除它。

1

使用三元它会像:

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

但我认为这不是很清楚阅读...

0

在传递参数之前,检查参数是否为空。例如

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”。希望它解决了你的问题。谢谢

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 
     } 
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... 
} 
相关问题