C#中如何在方法内返回多个不同类型的返回值?
实现方案
你当前使用的是C# 7.0及以上版本支持的命名值元组语法,按照以下方式赋值返回即可:
1. Analyze方法返回值赋值
你完成Substring分析逻辑得到三个对应结果后,有两种常用返回写法:
- 隐式匹配顺序返回:只要返回值的顺序和元组定义的字段顺序一致,会自动匹配对应字段
- 显式指定字段返回:手动指定字段名赋值,不受顺序影响,可读性更高,也能避免顺序错位的隐性BUG
示例代码(包含你提到的Substring处理逻辑,可根据你的实际业务规则替换):
public static (bool IsValid, bool IsNew, string SomeString) Analyze(string input) { // 这里替换为你自己的Substring分析逻辑 bool isValid = false; bool isNew = false; string someString = string.Empty; if (!string.IsNullOrEmpty(input) && input.Length >=3) { isValid = input.Substring(0,1) == "1"; isNew = input.Substring(1,1) == "1"; someString = input.Substring(2); } // 写法1:隐式顺序匹配 // return (isValid, isNew, someString); // 写法2:显式指定字段(更推荐) return (IsValid: isValid, IsNew: isNew, SomeString: someString); }
2. isValid方法实现
直接读取传入元组的IsValid字段返回即可:
public static bool isValid((bool IsValid, bool IsNew, string SomeString) input) { return input.IsValid; }
完整测试示例
public static class Analyzer { public static (bool IsValid, bool IsNew, string SomeString) Analyze(string input) { bool isValid = false; bool isNew = false; string someString = string.Empty; if (!string.IsNullOrEmpty(input) && input.Length >=3) { isValid = input.Substring(0,1) == "1"; isNew = input.Substring(1,1) == "1"; someString = input.Substring(2); } return (IsValid: isValid, IsNew: isNew, SomeString: someString); } public static bool isValid((bool IsValid, bool IsNew, string SomeString) input) { return input.IsValid; } } // 调用示例 // var result = Analyzer.Analyze("11test content"); // Console.WriteLine(result.IsValid); // 输出True // Console.WriteLine(result.IsNew); // 输出True // Console.WriteLine(result.SomeString); // 输出test content // Console.WriteLine(Analyzer.isValid(result)); // 输出True
内容的提问来源于stack exchange,提问作者itz4blitz
相关产品推荐
相关产品推荐

