我会在 Google/MSDN 上查找此内容,但我不知道它叫什么,所以我在这里询问。
在 Java 中,我似乎记得你可以做这样非常酷的事情,例如:
Class MyClass
{
int number;
MyClass() { }
void setNumber(int number)
{
this.number = number;
}
}
然后做类似的事情:
MyClass myClass = new MyClass()
{
override void setNumber(int Number)
{
this.number = 2 * number;
}
};
...或者其他的东西。请原谅我在上面犯的任何错误 - 我已经大约 6 年没有真正接触过 Java。
关键是,我记得你可以伪扩展内联类。
现在,我需要扩展一个C# WinForms控件,但我只需要使用它一次,而且修改很小。我需要做的就是覆盖CreateParams
财产和OnPaint()
处理程序。
我的解决方案已经变得巨大,类遍布各处,包含另一个与标准 .Net 控件基本相同的类似乎很遗憾,只是行为略有不同。
是否可以像在 Java 中一样在 C# 中执行此内联扩展?如果是这样,怎么办? (它叫什么名字,以便我可以在 MSDN 上查找它?)
这(显式主格匿名类型)在 C#3/4 中是不可能的。
类型必须显式创建然后构造。在 C# 中,任务有时会通过使用事件和委托(类调用提供诸如“NeedDataSource”之类的实现的事件)来“反转”——可以说正因为如此,尽管它在许多情况下是有意义的。
如果可以创建显式的非主格类型:var x = new { P = 1, };
但仅限于局部范围。隐式方法包括委托/lambda/匿名函数,不适用于此处。
快乐编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)