【问题标题】:How to return a String with int as an argument [closed]如何返回一个以 int 作为参数的字符串 [关闭]
【发布时间】:2023-02-23 08:05:08
【问题描述】:

我不明白为什么我的带有 Return String 的函数不能按预期工作,但是如果我执行 Console.WriteLine() 一切都会工作,但我需要 Return 而我无法做到......

我在 C# 中的代码是:

static void Main(string[] args)
        {
            Harshad(132);
        }

public static string Harshad(int numb)
        {

            string response = "";
            int sum = 0;

            for (int i = numb; i > 0; i = i / 10)
            {
                sum = sum + i % 10;   
            }
            

            if (numb % sum == 0)
            {
                //Console.WriteLine(numb + " is a harshad number");
                
                response = "H";
            }
            else
            {
                //Console.WriteLine(numb + " is not a harshad number");
                response = "M";
            }

            Console.WriteLine($"Sum of digits is {sum}");

            return response;
        }

我尝试了上面发布的代码——从一个以 int 作为参数的函数返回一个字符串;但它没有用;

【问题讨论】:

  • 究竟是什么“不起作用”?您没有使用从被调用函数 Harshad(132) 返回的值。值不在任何地方使用。将其存储到变量或打印到控制台。
  • 旁注:一般来说,如果一个函数返回一个非 void 类型(比如你的例子中的 String),那么让它向控制台输出一些东西通常被认为是不好的,在学术界被称为“副作用”。

标签: c#


【解决方案1】:

我尝试了上面发布的代码 - 从 函数以 int 作为参数;但它没有用;

它确实有效,但您没有捕获函数的返回值:

static void Main(string[] args)
{
    Harshad(132);
}

所以在上面,返回值被丢弃了。

相反,要么将它直接输出到控制台,要么将它捕获到一个 String 变量中:

static void Main(string[] args)
{
    String result = Harshad(132);
    Console.WriteLine("result = " + result);
}

直接输出:

static void Main(string[] args)
{
    Console.WriteLine("result = " + Harshad(132));
}

【讨论】:

  • 我的假设是,如果我返回一个字符串,它应该在作为函数调用时显示,而不需要额外的 Console.WriteLine
  • 那是一个错误的假设。 =) 未传递给另一个函数或直接在变量中捕获的返回值将被忽略和丢失。
  • 仅仅因为返回了一个字符串,并不意味着它应该始终显示在屏幕上的某个地方。也许那个 String 被用作其他东西的中间值,或者被用来为代码的其他部分做出决定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多