c#4.0方法的可空输入参数 public IQueryable FindAllProfiles(字符串CountryFrom,字符串CountryLoc) { .... }
对于上述方法,是否可以使用可为空的输入参数CountryFrom和CountryLoc?当我调用此方法时,我必须传入2个值,否则可能会出现异常。有什么想法吗?c#4.0方法的可空输入参数 public IQueryable FindAllProfiles(字符串CountryFrom,字符串CountryLoc) { .... },c#,C#,对于上述方法,是否可以使用可为空的输入参数CountryFrom和CountryLoc?当我调用此方法时,我必须传入2个值,否则可能会出现异常。有什么想法吗?字符串可以为空。您的意思是不可为空吗?string是一种引用类型,因此已经可以为空。您可以调用FindAllProfiles(null,null),代码至少可以正常编译。当然,您需要确保方法体适当地处理空参数,但这是辅助的 或者,如果您只是不允许在运行时使用任何空参数调用FindAllProfiles函数(是否?),只需在方法顶部使用gua
字符串可以为空。您的意思是不可为空吗?string
是一种引用类型,因此已经可以为空。您可以调用FindAllProfiles(null,null)
,代码至少可以正常编译。当然,您需要确保方法体适当地处理空参数,但这是辅助的
或者,如果您只是不允许在运行时使用任何空参数调用FindAllProfiles
函数(是否?),只需在方法顶部使用guard语句即可:
public IQueryable<Profile> FindAllProfiles(string CountryFrom, string CountryLoc)
{
....
}
旁注:根据所有样式指南,函数参数名称应使用camelCase编写。您的问题询问它们是否可以为null,但似乎暗示它们不能为null
因为string
是引用类型,所以它们可以为null(并且必须为null)。无法强制(在编译时)它们具有非空值。正如其他人所说,字符串可以已经是空的。
由于您使用的是字符串
,因此在使用参数之前,您需要对字符串进行测试。IsNullOrEmpty(yourString)
,以验证值是否实际存在。您需要在输入时检查字符串,使用IsNullOrEmpty
可能是最好的方法(除非空字符串(“”)有效),然后,您可以返回null或设置默认值并继续处理,甚至抛出自己的异常(并在调用例程中捕获它)
我很想说,如果你有一个方法调用,你知道它不能接受空参数,在你调用这个方法并在你的调用类中处理它之前,你要检查它。如果你正在编写这个方法并使用C#4,你可以使用
使用它,您可以为参数设置默认值
如果您只是在使用函数,那么您可以传入String.Empty而不是null字符串。我很困惑,字符串是可以为null的……我想您的意思是您需要两个字符串输入,并且它们不应该为null,即,如何强制它们为非null。
if (CountryFrom == null)
throw new ArgumentNullException("CountryFrom")
if (CountryTo == null)
throw new ArgumentNullException("CountryTo")