如何在C#中无需定义变量直接获取out参数的输出?
在C#中直接从out参数获取结果的一行写法
在C# 7.0及更高版本中,你可以直接在方法调用的参数里声明out变量,无需提前定义存储变量,就能把int.TryParse()的调用和结果处理写成一行代码。你给出的两种lambda写法不符合C#语法规范,下面是正确的实现方式:
基础内联out变量写法
直接在int.TryParse()的参数中声明out变量,结合条件判断确保解析成功后再输出:
using static System.Console; internal class Program { private static void Main(string[] args) { if (int.TryParse("10", out int result)) WriteLine(result + 20); } }
不区分解析成功与否的一行写法
如果不管解析是否成功都要输出(解析失败时result会取int的默认值0),可以用三元运算符简化:
using static System.Console; internal class Program { private static void Main(string[] args) { WriteLine(int.TryParse("10", out int result) ? result + 20 : 0); } }
C# 8.0+ 更简洁的模式匹配写法
如果你的项目使用C# 8.0及以上版本,还可以用模式匹配直接将字符串转换为int类型,写法更直观:
using static System.Console; internal class Program { private static void Main(string[] args) { if ("10" is int result) WriteLine(result + 20); } }
核心逻辑是利用C# 7.0引入的内联out变量声明特性,允许在方法参数列表中直接定义out参数对应的变量,省去提前声明变量的步骤;结合条件语句或模式匹配,就能把解析和输出逻辑整合为一行代码。
内容的提问来源于stack exchange,提问作者Hamza Elashry
相关产品推荐
相关产品推荐

