我需要编写一个扩展方法来替换字符串和 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/