【问题标题】:Difference between using out parameter and return in C# [duplicate]在C#中使用out参数和return之间的区别[重复]
【发布时间】:2019-07-28 15:58:43
【问题描述】:

我正在学习 C#,并且对它完全陌生,所以如果这看起来是一个非常简单的问题,我很抱歉。

我刚刚看了一个教程,解释了如何使用out 参数从一个方法返回多个值。但是,我真的不明白它在实践中是如何工作的。他们给出的例子是:

using System;

namespace UsingOut
{
    class Program
    {
        static void Main(string[] args)
        {
            string statement = "GARRRR";
            string murmur = Whisper(statement, out bool marker);
            Console.WriteLine(murmur);
        }

        static string Whisper(string phrase, out bool wasWhisperCalled)
        {
            wasWhisperCalled = true;
            return phrase.ToLower();
        }
    }
}

但是,我看不出这是如何返回多个值的?看起来它只是返回字符串?

请有人给我一个非常简单的解释,说明何时使用out 以及它的实际作用?

非常感谢

【问题讨论】:

  • wasWhisperCalled = true; 你的布尔参数也被设置/更改/修改并返回
  • 谢谢@ŇɏssaPøngjǣrdenlarp :) 我没看到它在哪里返回??
  • 设置wasWhisperCalled = true也会在调用方法中设置marker = true。您也可以使用 ValueTuple 作为返回值:static (string, bool) Whisper(string phrase) { return (phrase.ToLower(), true); } 并使用 (string murmur, bool marker) = Whisper(statement); 调用它
  • Stack Overflow 不是一个教程网站。有关返回值和引用参数(例如使用 out 的参数)之间差异的信息,请参阅标记的重复项。也就是说,请注意“返回”的值仅表示方法的调用者具有该值。 out 参数不是通过与使用 return 语句返回的值相同的机制“返回”的,然后是方法返回后方法调用表达式本身的值;相反,它直接存储到最初通过out 传递的变量中。但两者都返回值。

标签: c# return output


【解决方案1】:

不知道你是否知道 C++,但它与 C++ 非常相似,你可以将参数传递给函数作为引用。所以,函数确实只返回一个字符串,但它也会设置 wasWhisperCalled 的值。因此,如果在函数调用之前 wasWhisperCalled 为 false,那么在函数调用之后它将被设置为 true。希望这能进一步澄清这一点。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 2010-09-13
    • 2010-12-12
    • 2011-12-05
    • 2011-03-11
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多