C#是否有Python中:=赋值表达式的等效语法?
C# 中是否有类似Python赋值表达式的等效语法?
Python 3.8引入的赋值表达式(海象运算符:=)可以在条件判断中同时完成变量赋值与逻辑判断,从而简化代码结构。在C#中,从C# 7.0版本开始就支持类似的简化写法,无需单独在一行提前完成变量赋值。
对应代码示例
未简化的C#写法(对应你提供的Python原始代码)
foreach (var rule in rules) { var place = GetPlace(rule); if (place != null) { Console.WriteLine($"Apply rule {rule.GetType().Name} -> {place}"); return place; } } throw new Exception("No rule found!");
简化后的C#写法(对应Python海象运算符版本)
foreach (var rule in rules) { if (var place = GetPlace(rule)) { Console.WriteLine($"Apply rule {rule.GetType().Name} -> {place}"); return place; } } throw new Exception("No rule found!");
针对值类型返回值的写法
如果GetPlace返回不可空值类型(比如int),可以结合具体判断条件实现:
foreach (var rule in rules) { if ((var place = GetPlace(rule)) != 0) // 根据实际业务调整判断逻辑 { Console.WriteLine($"Apply rule {rule.GetType().Name} -> {place}"); return place; } } throw new Exception("No rule found!");
注意事项
在条件中声明的place变量,其作用域仅限于if的代码块(以及对应的else块,若存在),和Python海象运算符的变量作用域特性一致,既能简化代码,也能保证变量作用域的合理性。
内容的提问来源于stack exchange,提问作者Daniel Novák
相关产品推荐
相关产品推荐

