C# 运算符 '??'和 'as'

c# operators '??' and 'as'

我看到了这段代码,但我不知道第二行中运算符的顺序。第二行的结果是什么?

Object obj = 1;

String s = obj as String ?? "";

C# operator precedence table 声明 as(参见“关系和类型测试”行)运算符的优先级高于空合并运算符(??),所以你的表达式将导致空字符串,因为 obj as String 将计算为 null 因此空合并运算符将 return 右侧操作数,即 "".