You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:25:17