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

时间:2016-02-11 22:08:54

标签: java c# syntax

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

分支是#34;粒子3D"表示3d位置和旋转。 对于void函数(Particle3D),behavior是一个委托(我用java中的一个简单抽象类替换它)。

根据视觉工作室的说法,b是临时的Particle3D。

这到底发生了什么?看起来这是将一个particle3D分配给一个委托,该委托表示一个以粒子3D作为参数的函数,过去我不知道=>运算符或下面的代码块意味着,我假设它以某种方式重载(这是为branch.Behavior分配一个未命名的函数吗?)

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中正常工作,其余代码全部移植而没有任何实际问题。

1 个答案:

答案 0 :(得分:3)

代码可以重写如下:

  var stateLayer = new google.maps.Data();
  var countyLayer = new google.maps.Data();

  stateLayer.loadGeoJson('state.json');
  countyLayer.loadGeoJson('county.json');

  stateLayer.setStyle({
    fillColor: 'gray',
    strokeColor: '#000',
    strokeOpacity: 1,
    strokeWeight: 1
  });

  countyLayer.setStyle({
    fillColor: '#fff',
    strokeColor: 'black',
    strokeOpacity: 1,
    strokeWeight: 1
  });

  stateLayer.setMap(map);
  countyLayer.setMap(map);

然后..

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);
};

请注意,您的当前代码定义了一个匿名方法,但是,希望这可以解释语法代表的内容