如何将以下javascript翻译为C#?

时间:2011-10-08 16:58:07

标签: c# javascript

我不明白在'(+ s [i])'中如何使用''。什么是'+'?另外我不明白||的使用这样的符号,它在做什么?

var draw = function(s){
...
if (+s[i]) a = (a+90)%360||360; // Right
else a = (a-90||360); // Left

在下面的代码中,我不明白'while(n--)'的作用是什么?

var getS = function(n){
    var s = '';
    while (n--) s += getNext(0);
    return s;
};

如果您想在上下文中查看此代码,请转到http://fractal.qfox.nl/并按F12以启动开发人员工具并在脚本中查找dragon.js.如果您喜欢挑战,请完全免费发布完整的C#翻译。

2 个答案:

答案 0 :(得分:6)

将+放在表达式前面会将其强制转换为数字,例如从一个字符串。

||如果可以转换为true,则运算符具有其左侧的值,否则为其右侧的值。所以|| b意味着“如果它不是空,假,零或空字符串,则使用a,否则使用b”。

当n达到零时,n--将具有布尔值false。

答案 1 :(得分:2)

if (+s[i])正在检查s [i]是否存在并且是一个数字!= 0.在C#中它将与

相同
int n;
if (int.TryParse(s[i], out n) && n != 0) { }

a = (a-90||360);基本上是说||的左侧是null,undefined,false或者零,然后是右边。在C#中它看起来像

a = (a-90 > 0)? a-90 : 360;

但必须在该行之前声明a


while (n--){ }不断重复,直到n为0.必须在运行该代码之前声明n,例如var n = 10;。在C#中它将是

int n = 10;
while (n >= 0)
{
    n--;
}