gpt4 book ai didi

C# 3.5 分部类 String IsNullOrWhiteSpace

转载 作者:可可西里 更新时间:2023-11-01 08:14:03 26 4
gpt4 key购买 nike

我正在尝试为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com