0

我正在寻找有关如何将代码转换为 C# for Unity 中的表达式的想法。我们有这个基本的陈述列表:

简单的陈述:

  • 分配:A:= A + 5
  • 调用:清除屏幕()
  • 返回:返回 5;

复合语句:

  • if-statement: if A > 3 then WRITELN(A) else WRITELN("NOT YET"); 结尾
  • switch-statement: switch (c) { case 'a': alert(); 休息; 案例'q':退出();休息; }
  • while-loop: while NOT EOF DO 开始 READLN 结束
  • 做循环:做{计算(&i); } 而 (i < 10);
  • for-loop: for A:=1 to 10 do WRITELN(A) end

替换这些语句的表达式应该链接起来,例如使用 And 运算符 (expression1 && expression2 && .. expresionN),因此执行顺序得到尊重。还允许使用 ?: 运算符。

任务

如果我们有这样的声明:

int a = 100;

可以转换为:

((a = 100) == a)

但并不完美,因为比较没有在 IL 代码中优化。我也试过:

((a = 100) is int)

这会引发警告,比较已优化,但分配也已删除。任何其他仅在 IL 代码中产生分配的想法?

称呼

调用会自动转换为表达式,对吗?嗯,不完全是。你如何链接一个 void 函数?

此外,如果您通过引用传递参数,您将需要表达式外部的变量。

返回

这个是直接转换的:

return 5;

(5)

If 和 Switch 语句

?: 运算符替换它们:

if (a == 5) { b = "yes"; } else { b = "no"; }

((a == 5) ? "yes" : "no")

While、Do 和 For 循环

如果迭代次数是固定的,则可以在此处使用循环展开。

4

0 回答 0