作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为 String
类创建额外的功能(IsNullOrWhitespace
与 .NET4 中一样)但我在引用时遇到问题:
Error 1 'String' is an ambiguous reference between 'string' and 'geolis_export.Classes.String'
我不想创建扩展方法。因为如果 string x = null;
用法:
private void tbCabineNum_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !e.Text.All(Char.IsNumber) || String.IsNullOrWhiteSpace(e.Text);
}
部分字符串:
public partial class String
{
public static bool IsNullOrWhiteSpace(string value)
{
if (value == null) return true;
return string.IsNullOrEmpty(value.Trim());
}
}
难道不能为 String
类创建额外的东西吗?我试图将部分放在 System
命名空间中,但这会导致其他错误。
将 String
重命名为 String2
也解决了这个问题。但这不是我想要的,因为那样就没有对原始 String
类的引用。
最佳答案
这样是不行的,因为.NET framework中的string
类是不偏的。
相反,使用像这样的真正的扩展方法:
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(this string value)
{
if (value == null) return true;
return string.IsNullOrEmpty(value.Trim());
}
}
用法是这样的:
string s = "test";
if(s.IsNullOrWhiteSpace())
// s is null or whitespace
与所有扩展方法一样,如果字符串为 null
,则调用不会导致空引用异常:
string s = null;
if(s.IsNullOrWhiteSpace()) // no exception here
// s is null or whitespace
出现这种行为的原因是编译器会将这段代码翻译成等价于以下 IL 代码的 IL 代码:
string s = null;
if(StringExtensions.IsNullOrWhiteSpace(s))
// s is null or whitespace
关于C# 3.5 分部类 String IsNullOrWhiteSpace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535492/
我是一名优秀的程序员,十分优秀!