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

如何在C#中使用参数化方法并获取其返回的计算结果?

问题:无法从Calcu方法获取计算结果并在外部打印

你的代码存在两个核心问题导致拿不到外部结果:

  • Calcu是void类型方法,本身不会返回任何值
  • result参数是值传递,方法内部对它的修改不会同步到外部的变量

下面给两种可行的解决办法:

方案一:让方法返回计算结果(推荐)

把Calcu的返回类型改成double?(可空double,用来处理无效运算符的情况),在每个分支里返回对应结果,外部接收后再打印:

// 读取输入的代码不变
Console.WriteLine("Enter first number: ");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter second number: ");
double num2= Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter operator: ");
char operation = Convert.ToChar(Console.ReadLine());

// 修改后的Calcu方法
static double? Calcu(char operation, double num1, double num2)
{
    switch (operation)
    {
        case '+':
            return num1 + num2;
        case '-':
            return num1 - num2;
        case '*':
            return num1 * num2;
        case '/':
            // 增加除数不为0的判断,避免运行时异常
            if(num2 == 0)
            {
                Console.WriteLine("Cannot divide by zero");
                return null;
            }
            return num1 / num2;
        default:
            Console.WriteLine("Invalid Operator");
            return null;
    }
}

// 调用方法并获取结果
double? result = Calcu(operation, num1, num2);
if(result.HasValue)
{
    Console.WriteLine($"Calculation result: {result.Value}");
}

方案二:使用out参数传递结果

如果不想修改方法返回类型,可以用out关键字标记result参数,让方法内部的赋值直接作用于外部变量:

// 读取输入的代码不变
Console.WriteLine("Enter first number: ");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter second number: ");
double num2= Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter operator: ");
char operation = Convert.ToChar(Console.ReadLine());
double result;

// 修改后的Calcu方法
static bool Calcu(char operation, double num1, double num2, out double result)
{
    result = 0; // 必须先初始化out参数
    switch (operation)
    {
        case '+':
            result = num1 + num2;
            return true;
        case '-':
            result = num1 - num2;
            return true;
        case '*':
            result = num1 * num2;
            return true;
        case '/':
            if(num2 == 0)
            {
                Console.WriteLine("Cannot divide by zero");
                return false;
            }
            result = num1 / num2;
            return true;
        default:
            Console.WriteLine("Invalid Operator");
            return false;
    }
}

// 调用方法并处理结果
if(Calcu(operation, num1, num2, out result))
{
    Console.WriteLine($"Calculation result: {result}");
}

额外提醒:你原来的代码里没有调用Calcu方法,记得要在读取输入后执行调用逻辑。

内容的提问来源于stack exchange,提问作者aaaaaeel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:05:21