C# 在C中使用out参数和返回之间的差异#

C# 在C中使用out参数和返回之间的差异#,c#,return,output,C#,Return,Output,我正在学习C#,而且我对C#完全陌生,所以如果这看起来是一个非常简单的问题,我很抱歉 我刚刚看了一个教程,解释了如何使用out参数从一个方法返回多个值。然而,我并不真正理解它在实践中是如何工作的。他们举的例子是: using System; namespace UsingOut { class Program { static void Main(string[] args) { string statement = "G

我正在学习C#,而且我对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
,以及它的实际作用是什么


<>谢谢你,虽然不知道C++是怎么做的,但是它和C++非常相似,你可以把一个参数传递给一个引用。所以,函数实际上只返回一个字符串,但它也会设置wassertCalled的值。因此,如果在函数调用之前WasCall为false,那么在函数调用之后它将设置为true。希望这能进一步澄清这一点。

wasserlipcalled=true
您的bool参数也被设置/更改/修改并返回谢谢@ŇssaPøngjǣrdenlarp:)我看不出它返回到哪里??设置
wasweartcalled=true
也将在调用方法中设置
marker=true
。您还可以使用
ValueTuple
作为返回值:
static(string,bool)Whisper(string-phrase){return(phrase.ToLower(),true);}
并使用
(string-murror,bool-marker)=Whisper(statement)调用它堆栈溢出不是教程站点。有关返回值和按引用参数(例如使用
out
的参数)之间差异的信息,请参见标记的重复。也就是说,请注意,“返回”的值只意味着方法的调用方拥有该值。
out
参数不是通过与使用
return
语句返回的值相同的机制“返回”的,然后它是方法返回后方法调用表达式本身的值;相反,它直接存储到变量中,该变量首先通过
out
传递。但两者都返回值。