Ozz*_*zah 3 c# overriding inline
我会在谷歌/ MSDN上查看,但我不知道它叫什么,所以我在这里问.
在Java中,我似乎记得你可以做这个非常酷的事情:
Class MyClass
{
int number;
MyClass() { }
void setNumber(int number)
{
this.number = number;
}
}
Run Code Online (Sandbox Code Playgroud)
然后做类似的事情:
MyClass myClass = new MyClass()
{
override void setNumber(int Number)
{
this.number = 2 * number;
}
};
Run Code Online (Sandbox Code Playgroud)
...或者其他的东西.原谅我上面犯的任何错误 - 我在大约6年内没有碰到过Java.
关键是,我记得你可以伪内联一个类.
现在,我需要扩展一个C#WinForms控件,但我只需要使用一次,并且修改非常小.我需要做的就是覆盖CreateParams属性和OnPaint()处理程序.
我的解决方案已经变得越来越大,所有的类都是如此,包含另一个基本上与标准.Net控件相同的类似乎是一种耻辱,只是行为略有不同.
是否可以像在Java中一样在C#中进行内联扩展?如果是这样,怎么样?(它叫什么,所以我可以在MSDN上查找它?)
小智 5
在C#3/4中无法实现这种(显式的主格匿名类型).
必须显式创建类型然后构造.使用Events和Delegates(类调用提供诸如"NeedDataSource"之类的实现的事件),C#中的任务有时会被"反转" - 可以说是因为这个,尽管它在许多情况下才有意义.
如果可以创建明确的非主格类型:var x = new { P = 1, };但仅限于本地范围.隐式方法包括delegates/lambdas/anonymous函数,这里不适用.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |