gpt4 book ai didi

C# 类 Java 类的内联扩展?

转载 作者:行者123 更新时间:2023-11-30 14:40:21 24 4
gpt4 key购买 nike

我会在 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# 中,使用事件和委托(delegate)(类调用事件,提供诸如“NeedDataSource”之类的实现)的任务有时会“反转”——可以说是因为这个,尽管它在许多情况下才有意义。

如果可以创建显式非主格类型:var x = new { P = 1, }; 但仅限于局部范围。隐式方法包括委托(delegate)/lambdas/匿名函数,此处不适用。

快乐编码。

关于C# 类 Java 类的内联扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com