当前位置:  开发笔记 > 编程语言 > 正文

String.IsNullOrBlank扩展方法

如何解决《String.IsNullOrBlank扩展方法》经验,为你挑选了3个好方法。

我不断检查字符串字段以检查它们是否为空或空白.

if(myString == null || myString.Trim().Length == 0)
{
    throw new ArgumentException("Blank strings cannot be handled.");
}

为了节省自己的一些输入,可以为String类创建一个具有相同效果的扩展方法吗?我理解如何为类实例添加扩展方法,但是如何向类添加静态扩展方法呢?

if(String.IsNullOrBlank(myString))
{
    throw new ArgumentException("Blank strings cannot be handled.");
}

Sean.. 36

你可以这样做:

public static bool IsNullOrBlank(this String text)
{
  return text==null || text.Trim().Length==0;
}

然后像这样调用它:

if(myString.IsNullOrBlank())
{
  throw new ArgumentException("Blank strings cannot be handled.");
}

这是有效的,因为C#允许您在null实例上调用扩展方法.



1> Sean..:

你可以这样做:

public static bool IsNullOrBlank(this String text)
{
  return text==null || text.Trim().Length==0;
}

然后像这样调用它:

if(myString.IsNullOrBlank())
{
  throw new ArgumentException("Blank strings cannot be handled.");
}

这是有效的,因为C#允许您在null实例上调用扩展方法.


@dan - 我不认为一个暗示其名称空检查的方法对扩展方法不利.
Bill Wagner在"更有效的C#"中建议不要使扩展函数与null实例一起使用(第183页).原因是扩展方法应该看起来像方法调用,并且您不能使用null实例调用方法.
你不应该使扩展方法使用"null"的原因是因为它们应该感觉像实例方法.

2> Ahmad Mageed..:

我知道这是一个古老的问题,但由于它已被提出并且尚未提及,因此从.NET 4.0开始,您只需使用String.IsNullOrWhiteSpace方法即可获得相同的结果.



3> Jim Arnold..:

您可以安全地在实例上使用扩展方法:

public static class StringExtensions
{
    public static bool IsNullOrBlank(this string s)
    {
        return s == null || s.Trim().Length == 0;
    }
}

测试用例:

string s = null;
Assert.IsTrue(s.IsNullOrBlank());
s = " ";
Assert.IsTrue(s.IsNullOrBlank());

虽然它看起来有点奇怪,但我想知道为什么你的字符串需要经常检查这个案例.如果你在源头修复它们,你将不必在以后对它们如此偏执!

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有