是否使用string. isnullorempty (string)检查字符串时,认为有string. isnullowhitespace (string)在。net 4.0及以上?
当前回答
这个怎么样?
if (string.IsNullOrEmpty(x.Trim())
{
}
这将修剪所有的空格,如果它们在那里,避免IsWhiteSpace的性能损失,这将使字符串满足“空”条件,如果它不是空的。
我也认为这是更清楚的,它通常是一个很好的实践,修剪字符串,特别是如果你把它们放入数据库或其他东西。
其他回答
最好的做法是选择最合适的。
.Net Framework 4.0 Beta 2有一个新的IsNullOrWhiteSpace()方法 字符串,它泛化IsNullOrEmpty()方法,也包括其他白色 空格除了空字符串。 术语“空白”包括在屏幕上不可见的所有字符 屏幕上。例如,空格、换行符、制表符和空字符串是白色的 空格字符*。
参考资料:这里
对于性能而言,IsNullOrWhiteSpace不是理想的,但确实是 好。方法调用将导致较小的性能损失。 此外,IsWhiteSpace方法本身有一些可以实现此功能的间接方法 如果不使用Unicode数据,则删除。一如既往,为时过早 优化可能是邪恶的,但它也很有趣。
参考资料:这里
检查源代码(参考源代码。net Framework 4.6.2)
IsNullorEmpty
[Pure]
public static bool IsNullOrEmpty(String value) {
return (value == null || value.Length == 0);
}
IsNull或WhiteSpace
[Pure]
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;
}
例子
string nullString = null;
string emptyString = "";
string whitespaceString = " ";
string nonEmptyString = "abc123";
bool result;
result = String.IsNullOrEmpty(nullString); // true
result = String.IsNullOrEmpty(emptyString); // true
result = String.IsNullOrEmpty(whitespaceString); // false
result = String.IsNullOrEmpty(nonEmptyString); // false
result = String.IsNullOrWhiteSpace(nullString); // true
result = String.IsNullOrWhiteSpace(emptyString); // true
result = String.IsNullOrWhiteSpace(whitespaceString); // true
result = String.IsNullOrWhiteSpace(nonEmptyString); // false
它说它所有的IsNullOrEmpty()不包括白间距,而IsNullOrWhiteSpace()做!
IsNullOrEmpty() 零 空
IsNullOrWhiteSpace()如果字符串是: 零 空 -只包含空白
string. isnullorempty (str) -如果你想检查字符串值是否已提供
string.IsNullOrWhiteSpace(str)——基本上这已经是一种业务逻辑实现(例如,为什么“”是坏的,但像“~~”这样的东西是好的)。
我的建议是——不要将业务逻辑与技术检查混为一谈。 例如,字符串。IsNullOrEmpty最适合在方法的开头使用,以检查其输入参数。
它们是不同的函数。你应该根据你的情况决定你需要什么。
我不认为使用它们中的任何一种是不好的做法。大多数情况下,IsNullOrEmpty()就足够了。但你可以选择:)
用IsNullOrEmpty和IsNullOrwhiteSpace检查一下
string sTestes = "I like sweat peaches";
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < 5000000; i++)
{
for (int z = 0; z < 500; z++)
{
var x = string.IsNullOrEmpty(sTestes);// OR string.IsNullOrWhiteSpace
}
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine("RunTime " + elapsedTime);
Console.ReadLine();
您将看到IsNullOrWhiteSpace要慢得多:/
推荐文章
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接
- 如何检查字符串的特定字符?
- Haskell:将Int转换为字符串
- 如何使用。net 4运行时运行PowerShell ?
- 在foreach循环中编辑字典值
- 如何在xml文档中引用泛型类和方法
- 使用System.IO.Compression在内存中创建ZIP存档
- 从HttpResponseMessage获取内容/消息
- 可选查询字符串参数。NET Web API
- 将列表序列化为JSON
- 用c#反序列化JSON
- 将字符串转换为Uri