C#如何让同一个方法同时返回字符串与整数?
C#简易计算器:实现方法同时返回整数结果与错误提示
C#是强类型语言,单个方法无法直接返回两种不同的原始类型(int和string),但可以通过以下几种方式实现需求:
方案1:返回object类型(简单直接,适合小型程序)
将方法返回类型改为object,因为object是所有.NET类型的基类,可以容纳int或string。调用时通过模式匹配判断返回值类型:
static object GetResult(int a, int b, int c) { switch (c) { case 1: return a + b; case 2: return a - b; case 3: return a * b; case 4: return a / b; default: return "Invalid Operator"; } }
调用示例:
var result = GetResult(num1, num2, op); if (result is int calcResult) { Console.WriteLine(calcResult); } else { Console.WriteLine(result.ToString()); }
方案2:使用out参数返回结果(类型安全,符合C#惯用写法)
用out参数输出计算结果,方法本身返回错误信息(无错误时返回null),避免装箱拆箱操作:
static string GetResult(int a, int b, int c, out int result) { result = 0; // 初始化out参数 switch (c) { case 1: result = a + b; return null; case 2: result = a - b; return null; case 3: result = a * b; return null; case 4: result = a / b; return null; default: return "Invalid Operator"; } }
调用示例:
string errorMsg = GetResult(num1, num2, op, out int calcResult); if (errorMsg == null) { Console.WriteLine(calcResult); } else { Console.WriteLine(errorMsg); }
方案3:自定义结果类(扩展性最强,适合复杂场景)
创建一个包含状态、结果和错误信息的类,这种方式类型安全且便于后续功能扩展:
// 自定义计算结果类 public class CalculationResult { public bool IsSuccess { get; set; } public int Result { get; set; } public string ErrorMessage { get; set; } } static CalculationResult GetResult(int a, int b, int c) { var result = new CalculationResult(); switch (c) { case 1: result.IsSuccess = true; result.Result = a + b; break; case 2: result.IsSuccess = true; result.Result = a - b; break; case 3: result.IsSuccess = true; result.Result = a * b; break; case 4: result.IsSuccess = true; result.Result = a / b; break; default: result.IsSuccess = false; result.ErrorMessage = "Invalid Operator"; break; } return result; }
调用示例:
var calcResult = GetResult(num1, num2, op); if (calcResult.IsSuccess) { Console.WriteLine(calcResult.Result); } else { Console.WriteLine(calcResult.ErrorMessage); }
注意:原代码中除法操作未处理除数为0的情况,实际使用时建议添加判断避免运行时异常。
内容的提问来源于stack exchange,提问作者Mtm
相关产品推荐
相关产品推荐

