【发布时间】:2016-09-15 10:15:06
【问题描述】:
在 Unity 中,这是 c# 中的一个类别,
public static class HandyExtensions
{
public static IEnumerator Tweeng( this System.Action<float> v, float d )
{
while (..)
{
..
v( 13f*t );
yield return null;
}
v(13f);
}
编译正常!
但如果你尝试使用它,
yield return StartCoroutine(
( (x)=>laser=x ).Tweeng(3.141f)
);
出现了这个令人痛心的错误:
资产/脚本/...cs(116,34):错误 CS0023:
.' operator cannot be applied to operand of typeanonymous 方法'
我为此流泪。
c# 怎么会让我们失望?
肯定有一种方法可以为扩展调用“on”这样的 lambda?
顺便说一句,解决方法是使用3.14f.Tweeng((x)=>laser=x),但这并不酷。
【问题讨论】:
-
眼泪?伤心?你能把这个问题的戏剧性淡化一点吗?
-
哇——我们的观点差不多!和数学未成年人。打开幽默检测器 :)
-
您现在可能应该已经意识到,您在本网站提出的任何问题不属于您。他们属于社区。问题应该是专业和清晰的,并且没有额外的“绒毛”来分散他们的注意力。如果有人有类似的问题并用谷歌搜索,当他们看到你的标题时,他们会分心或困惑。这是不必要的。
-
你甚至不是一个非英语母语的人,没有任何借口:) 无论如何这是一个严肃的问题,严肃的 cmets 在哪里??
-
请不要命名
var。 C# 已经过精心设计,因此这样做是合法的,因此遗留代码不会变得非法。但是它很可能与隐式类型局部变量的声明语法混淆,因此在新代码中这样做是一种不好的做法。