重载匿名函数

发布于 2024-08-29 08:47:25 字数 431 浏览 4 评论 0原文

我仍然对委托很感兴趣,我很好奇:是否可以重载匿名函数?

这样:

delegate void Output(string x, int y);

支持:

Output show = (x, y) => Console.WriteLine("{0}: {1}", x.ToString(), y.ToString());

和:

delegate void Output(string x, string y);

允许:

show( "ABC", "EFG" );

和:

show( "ABC", 123 );

Still wrapping my head around Delegates and I'm curious: Is it possible to overload anonymous functions?

Such that:

delegate void Output(string x, int y);

Supports:

Output show = (x, y) => Console.WriteLine("{0}: {1}", x.ToString(), y.ToString());

And:

delegate void Output(string x, string y);

Allowing:

show( "ABC", "EFG" );

And:

show( "ABC", 123 );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一城柳絮吹成雪 2024-09-05 08:47:26

您也许可以使用通用委托。

public delegate void Output<T1,T2>(T1 x, T2 y);

You can probably use Generic Delegates.

public delegate void Output<T1,T2>(T1 x, T2 y);
夜无邪 2024-09-05 08:47:25

不,你不能让委托超载。

这是一个类型,

delegate void Output(string x, int y);

将其更改为:

delegate void Output(string x, string y);

将重新定义它。

这有点像定义两个具有相同名称的不同类(在同一名称空间中)。

No you can't overload a delegate like that.

This is a type

delegate void Output(string x, int y);

changing it to this:

delegate void Output(string x, string y);

would redefine it.

It would be kinda like defining two different classes with the same name (in the same namespace).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文