将语句转换为表达式

时间:2013-05-24 15:54:22

标签: c# optimization unity3d

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

简单陈述:

  • 作业:A:= A + 5
  • 致电:CLEARSCREEN()
  • return:return 5;

复合语句:

  • if-statement:如果A> 3然后WRITELN(A)否则WRITELN(“NOT YET”);端
  • switch-statement:switch(c){case'a':alert();打破; case'q':quit();打破; }
  • while-loop:while EOF DO开始READLN结束
  • do-loop:do {calculation(& i); } while(i< 10);
  • for-loop:对于A:= 1到10做WRITELN(A)结束

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

分配

如果我们有这样的陈述:

int a = 100;

可以转换为:

((a = 100) == a)

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

((a = 100) is int)

这会抛出警告,比较已经过优化,但分配也被删除了。是否只在IL代码中生成赋值的任何其他想法?

拨打

呼叫会自动转换为表达式,对吗?好吧,不完全是。你如何链接一个无效函数?

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

返回

这个是直接转换的:

return 5;

(5)

If和Switch语句

?:运算符替换它们:

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

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

While,Do和For循环

如果迭代次数是固定的,这里可以使用循环展开。

0 个答案:

没有答案