【发布时间】:2010-09-15 10:02:44
【问题描述】:
我正在尝试使用扩展方法向 C# StringBuilder 类添加运算符重载。具体来说,给定StringBuildersb,我希望sb += "text" 等同于sb.Append("text")。
这是为StringBuilder 创建扩展方法的语法:
public static class sbExtensions
{
public static StringBuilder blah(this StringBuilder sb)
{
return sb;
}
}
它成功地将blah扩展方法添加到StringBuilder。
不幸的是,运算符重载似乎不起作用:
public static class sbExtensions
{
public static StringBuilder operator +(this StringBuilder sb, string s)
{
return sb.Append(s);
}
}
除其他问题外,此上下文中不允许使用关键字 this。
是否可以通过扩展方法添加运算符重载?如果是这样,正确的方法是什么?
【问题讨论】:
-
虽然乍一看这似乎是一个很酷的想法,但请考虑 var otherSb = sb + "hi";
标签: c# extension-methods operator-overloading