关于 C# 中 => 的不熟悉和奇怪的语法



我正在尝试将开源C#程序的一部分移植到java中,并且遇到了一段完全没有意义的代码,我无法在线找到语法的任何解释,并且MCVS中没有工具提示甚至运算符的名称,以进行更具体的搜索。

分支是"粒子3D"类型,表示3D位置和旋转。行为是一个 void 函数 (Particle3D( 的委托(我已经用 Java 中的一个简单的抽象类替换了它(。

根据Visual Studios的说法,b是一个临时的Particle3D。

这到底是怎么回事? 看起来这是将 Particle3D 分配给一个代表以 Particle3D 为参数的函数的委托,过去我不知道 => 运算符或以下代码块是什么意思,我假设它以某种方式重载(这是将一个未命名的函数分配给分支。行为?

branch.Behaviour = b =>
{
    LeavesBehaviour(b);
    BranchingBehaviour(branchingPercent, b, depth + 1);
    // weight behaviour
    if (applyWeightOnBranches)
        b.Direction = new Vector3D(initialDirection.X, initialDirection.Y * LineairScaleTo((double)b.Life / (double)branch.MaxLife, -1f, 1f), initialDirection.Z);// +(2 * (((double)b.Life / (double)maxLife)) - 1);
};

我的最终目标是让它在java中正常工作,其余的代码都移植了,没有任何真正的问题。

代码可以重写如下:

void MyMethod(Particle3D b)
{
    LeavesBehaviour(b);
    BranchingBehaviour(branchingPercent, b, depth + 1);
    // weight behaviour
    if (applyWeightOnBranches)
        b.Direction = new Vector3D(initialDirection.X, initialDirection.Y * LineairScaleTo((double)b.Life / (double)branch.MaxLife, -1f, 1f), initialDirection.Z);// +(2 * (((double)b.Life / (double)maxLife)) - 1);
};

然后。。

branch.Behaviour = MyMethod;

请注意,您当前的代码定义了一个匿名方法,但是,希望这应该阐明语法所代表的内容

最新更新