c#4.0可以为一个方法输入参数

时间:2010-07-07 15:50:25

标签: c#

public IQueryable<Profile> FindAllProfiles(string CountryFrom, string CountryLoc)
{
....
}

对于上述方法,是否可以使用可为空的输入参数CountryFrom和CountryLoc?当我调用这个方法时,我必须传入2个值,否则我可能会遇到异常。任何想法..?

6 个答案:

答案 0 :(得分:3)

如果您正在编写方法并使用C#4,则可以使用optional arguments

有了它,你可以为参数设置一个默认值。

如果您只是使用该函数,则可以传入String.Empty而不是空字符串。

答案 1 :(得分:2)

正如其他人所说,string已经可以为空......

由于您使用的是string,因此您需要在使用参数前对string.IsNullOrEmpty(yourString)进行测试,以验证实际存在的值。

答案 2 :(得分:2)

您需要在条目中检查字符串,使用IsNullOrEmpty可能是最好的方法(除非空字符串(“”)有效),然后您可以返回null或设置默认值并继续处理甚至抛出你自己的异常(并在你的调用例程中捕获它)。

我很想说,如果你有一个你知道的方法调用不能接受在之前检查的空参数,你调用方法并在你的调用类中处理它。

答案 3 :(得分:1)

string可以为空。你的意思是不可空吗?

答案 4 :(得分:1)

string是引用类型,因此已经可以为空。您可以致电FindAllProfiles(null, null),代码将至少编译。当然,您需要确保方法体适当地处理空参数,但这是辅助的。

或者,如果您只是想在运行时禁止使用任何null参数调用FindAllProfiles函数(对吗?),只需在方法顶部使用guard语句:

if (CountryFrom == null)
    throw new ArgumentNullException("CountryFrom")
if (CountryTo == null)
    throw new ArgumentNullException("CountryTo")

附注:根据所有样式指南,函数参数名称应写在 camelCase 中。

答案 5 :(得分:1)

你的问题是否可以为空,但似乎暗示他们一定不能为空。

因为string是引用类型,所以它们可以为空(并且必须可以为空)。没有办法强制(在编译时)它们具有非空值。