gpt4 book ai didi

C# 自动将 ToLower 应用于方法字符串参数?

转载 作者:行者123 更新时间:2023-11-30 13:13:12 25 4
gpt4 key购买 nike

有没有办法让 C# 编译器在方法内部使用 ToLower()(或任何其他操作方法调用)之前自动将其应用于特定方法参数?

//附加信息:它的目的是使用带有不区分大小写键的字典。显然,我的第一种方法是完全错误的,因为我已经找到了一种完全不同的方法来解决 Dictionary 本身,而不是访问它的 key 。

我的错!我应该向您提供该信息。因此,无需进一步回答。无论如何,非常感谢!

在这种特殊情况下更好的方法:c# Dictionary: making the Key case-insensitive through declarations

最佳答案

不,C# 编译器不会为您做这件事(为什么要针对这样的特定要求量身定制?),但您可以通过编写一个简单的包装器 struct 来完成这件事 围绕 string:

struct LowerCaseString
{
public LowerCaseString(string value)
{
this.value = value.ToLower();
}

private readonly string value;

public static implicit operator LowerCaseString(string value)
{
return new LowerCaseString(value);
}

public override string ToString()
{
return value;
}

… // perhaps implement IEquatable<>, IComparable<>, etc.
}

隐式转换运算符允许您编写如下代码:

Foo("Hello world.");

void Foo(LowerCaseString text)
{
Console.WriteLine(text);
}

虽然这如您所愿地工作,但这种方法有一些缺点:

  • 一个微小的(可能可以忽略不计的)性能损失,因为必须在您的字符串周围实例化一个包装器对象。

  • 对于您代码的其他用户来说,隐式转换运算符的存在可能并不明显,因此他们最终改为编写 new LowerCaseString("Hello world.")。如果您的团队经常使用它,使用 Visual Studio 的对象浏览器查看类可能会解决这个问题。

  • 此包装器不允许您指定用于 .ToLower()CultureInfo。您要使用 CurrentCultureInvariantCulture 还是其他?

关于C# 自动将 ToLower 应用于方法字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596708/

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