我正在寻找有关如何在C#for Unity中将代码转换为表达式的想法。我们有这个基本的陈述清单:
简单陈述:
复合语句:
应该链接替换这些语句的表达式,例如使用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循环
如果迭代次数是固定的,这里可以使用循环展开。