[英]how to return false if string has null or white space in c#
我不能返回null,因为我的Hlist
是一个不可为空的类型。 还有什么我可以在null的地方返回?
HList findHListentry(string letter)
{
if (string.IsNullOrWhiteSpace(letter))
{
HList result = listentry.Find(delegate(HList bk)
{
return bk.letter == letter;
});
return result;
}
else
{
return ?;
}
}
使用Nullable<HList>
代替?
HList? findHListentry(string letter)
{
///
return null;
}
有几种处理非可空值类型的方法:
Nullable<HList>
(它的简写名称是HList?
),或 HList
条目,类似于Microsoft为Guid
定义一个条目 bool
而不是HList
,并通过out
参数返回HList
,就像在Dictionary.TryGetValue
完成它一样。 使用特殊值:
struct HList {
public static HList Empty;
...
}
if (...) {
return HList.Empty;
}
回归bool
:
bool findHListentry(string letter, out HList res) {
...
}
如果方法的输入真的不应为null
或空字符串,则可能抛出异常:
HList findHListentry(string letter)
{
if (string.IsNullOrWhiteSpace(letter))
throw new ArgumentNullException("letter");
HList result = listentry.Find(
delegate(HList bk)
{
return bk.letter == letter;
}
);
return result;
}
(请注意,我也颠倒了条件逻辑,因为它听起来像是在寻找与问题标题相反的东西。)
您还可以查看代码约定以验证方法的前提条件,而不是手动检查输入并抛出异常。
你有几个选择:
如果HList
是结构:
HList? findHListentry(string letter)
HList? findHListentry(string letter)
你可能想看看N的Nullable
如果您不想返回null,则可以创建一个HList的静态实例,用于表示它是一个“空”值。
与EventArgs.Empty类似
public static readonly HList EmptyHList = new Hlist() { /* initialise */ };
一种实现是提供非可空类型的Empty实例,并返回该实例以代替null。 以字符串为例......虽然String是.NET中的可空类型,但它包含一个名为Empty的内置只读字段,因此使用String可以执行以下操作:
if(mystring == null)
{
//My String Is Null
}
或者,你可以做到这一点
if(mystring == String.Empty)
{
//My String is Empty
}
虽然它可能不是最好的方法,但您可以在类/结构中添加一个空的HList实例。 例如
HList findHListentry(string letter)
{
if (string.IsNullOrWhiteSpace(letter))
{
HList result = listentry.Find(delegate(HList bk) { return bk.letter == letter; });
return result;
}
else
{
return HList.Empty;
}
}
public struct HList
{
public const HList Empty;
}
现在你可以用null代替它
if(myHList == HList.Empty)
{
//My HList is Empty
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.