You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:30:58