缺少IsNullOrEmptyOrWhiteSpace方法
我定义一个字符串并通过string.IsNullOrEmptyOrWhiteSpace()
检查。
但是我收到了这个错误:
‘string’不包含’IsNullOrEmptyOrWhiteSpace’的定义,并且没有扩展方法’IsNullOrEmptyOrWhiteSpace’可以找到接受类型’string’的第一个参数(你是否缺少using指令或汇编引用?)D:\ project \ project \ Controllers \ aController.cs 23 24项目
是什么原因?
String.IsNullOrWhiteSpace已在.NET 4中引入。如果您不是针对.NET 4,您可以轻松编写自己的:
public static class StringExtensions { public static bool IsNullOrWhiteSpace(string value) { if (value != null) { for (int i = 0; i < value.Length; i++) { if (!char.IsWhiteSpace(value[i])) { return false; } } } return true; } }
可以像这样使用:
bool isNullOrWhiteSpace = StringExtensions.IsNullOrWhiteSpace("foo bar");
或者如果您愿意,可以作为扩展方法 :
public static class StringExtensions { public static bool IsNullOrWhiteSpace(this string value) { if (value != null) { for (int i = 0; i < value.Length; i++) { if (!char.IsWhiteSpace(value[i])) { return false; } } } return true; } }
允许您直接使用它:
bool isNullOrWhiteSpace = "foo bar".IsNullOrWhiteSpace();
要使扩展方法起作用,请确保已定义StringExtensions
静态类的命名空间在范围内。
这是另一种替代实现,只是为了好玩。 它可能不会像Darin那样表现得好,但它是LINQ的一个很好的例子:
public static class StringExtensions { public static bool IsNullOrWhiteSpace(this string value) { return value == null || value.All(char.IsWhiteSpace); } }
也许IsNullOrWhiteSpace
是您要搜索的方法? http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx
我用过(在.NET v2.0中):
public static class StringExtensions { public static bool IsNullOrEmptyOrWhitespace(this string value) { return string.IsNullOrEmpty(value) || string.IsNullOrEmpty(value.Trim()); } }
Trim()
方法将删除所有前导或尾随空格,因此如果您的字符串完全是空格,则它将被缩减为空字符串。
我不能说性能一直是个问题。
来自Microsoft的.NET 4 Framework源代码的精确副本,.. \ RefSrc \ Source.Net \ 4.0 \ DEVDIV_TFS \ Dev10 \ Releases \ RTMRel \ ndp \ clr \ src \ BCL \ System \ String.cs \ 1305376 \ String.cs
public static bool IsNullOrEmpty(String value) { return (value == null || value.Length == 0); } public static bool IsNullOrWhiteSpace(String value) { if (value == null) return true; for(int i = 0; i < value.Length; i++) { if(!Char.IsWhiteSpace(value[i])) return false; } return true; }
备注
(来自http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx )
IsNullOrWhiteSpace
是一种方便的方法,类似于以下代码,只是它提供了卓越的性能:
return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
空格字符由Unicode标准定义。 当IsNullOrWhiteSpace
方法作为空白字符传递给Char.IsWhiteSpace
方法时,它会解释返回值为true的任何字符。
有趣的是,没有人在这里使用Trimfunction:
public static class StringExtensions { public static bool IsNullOrEmptyOrWhiteSpace(this string value) { return string.IsNullOrEmpty(value) || ReferenceEquals(value, null) || string.IsNullOrEmpty(value.Trim(' ')); } }
更新:我现在在评论中看到它是出于各种原因而被提议和拒绝的,但如果人们更喜欢简洁而不是效率……
预.NET 4.0,最短的:
public static bool IsNullOrWhiteSpace(this string value) { return value == null || value.Trim() == ""; }
效率不高; 考虑可读性和性能,Jon更好。