C#是否存在可同时为两个变量赋不同值的函数,类似Python多变量赋值?
C#实现多变量同时赋值的方法
C# 7.0及以上版本支持元组解构特性,可以实现和你提到的Python写法几乎一致的多变量同时赋值效果,完全可以通过函数封装实现相同的输入读取赋值逻辑。
最简一行实现(无需单独封装函数)
直接利用LINQ和元组解构,一行完成和示例Python代码完全等价的逻辑:
var (n1, n2) = Console.ReadLine().Split(',').Select(int.Parse).ToArray() switch { var arr => (arr[0], arr[1]) };
封装为复用函数的实现
如果需要高频使用该逻辑,可以封装为专用函数,调用时更简洁:
// 封装函数:输出提示,读取一行按逗号分隔的输入,返回两个int值 static (int num1, int num2) ReadTwoCommaSeparatedInts(string prompt) { Console.Write(prompt); string[] inputParts = Console.ReadLine().Split(',', StringSplitOptions.RemoveEmptyEntries); // 可自行补充输入格式校验、转换失败异常捕获逻辑 return ( int.Parse(inputParts[0].Trim()), int.Parse(inputParts[1].Trim()) ); }
调用方式和Python写法高度接近:
var (n1, n2) = ReadTwoCommaSeparatedInts("Input Numbers");
低版本C#兼容实现
如果使用的是不支持元组的C# 7.0以下版本,可通过out参数实现相同效果:
// out参数实现 static void ReadTwoCommaSeparatedInts(string prompt, out int n1, out int n2) { Console.Write(prompt); string[] inputParts = Console.ReadLine().Split(','); n1 = int.Parse(inputParts[0].Trim()); n2 = int.Parse(inputParts[1].Trim()); } // 调用示例 int n1, n2; ReadTwoCommaSeparatedInts("Input Numbers", out n1, out n2);
内容的提问来源于stack exchange,提问作者Jay_ gov
相关产品推荐
相关产品推荐

