c# - 为泛型写一个扩展方法

标签 c# generics methods extension-methods

我需要编写一个扩展方法来替换字符串和 StringBuilder 中的字符。 我可以编写两个扩展方法,例如:

public static string ReplaceChar(this string value, string charToReplace)
{
    return value.Replace(charToReplace, "_");
}

public static StringBuilder ReplaceChar(this StringBuilder value, string charToReplace)
{
    return new StringBuilder (value.ToString().Replace(charToReplace, "_"));
}

但我不知道是否有可能编写一个通用方法,例如:

public static T ReplaceChar<T>(this T value, string charToReplace)
{
    return new T(value.ToString().Replace(charToReplace, "_"));
}

在这种情况下我有一个错误:T 没有 new() 构造函数

最佳答案

这是一个非常糟糕的主意。您希望以相同的方式使用不可变类型和可变类型。 StringBuilder 的唯一作用是为字符串操作提供更好的速度性能。您的 StringBuilder 扩展方法糟糕且无用。

  • 很糟糕,因为它创建了 2 个对象并且违反了 StringBuilder 的理念。
  • 没用,因为 StringBuilder 已经有一个 Replace 方法

关于c# - 为泛型写一个扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596635/

相关文章:

c# - C# 中的泛型继承类型限制

c# - 没有 new() 的泛型

c# - .NET MAUI,如何在构造函数中从 SecureStorage 获取数据

Java - 泛型类的类成员的行为

symfony - 如何删除循环引用处理程序 (Symfony 4) 的已弃用消息?

java - 窗口显示图形而不是空白

Java - Random.nextInt 编译错误;_;

c# - 编译器无法推断出表达式类型?

c# - 如何使用空间搜索邮政编码半径?

c# - 在未安装 Outlook 客户端的情况下使用 Microsoft.Office.Interop.Outlook