C#-获取输出为元组但多次执行相同参数的方法?

C#-获取输出为元组但多次执行相同参数的方法?,c#,methods,tuples,return-value,C#,Methods,Tuples,Return Value,我不熟悉编码和C#,我想知道如果使用元组作为返回值,是否会多次调用一个方法 此描述可能缺少,因为我不是英语母语,因此以下是一些示例代码: public static (bool Correct, string Output) MyMethod1(int MyArgument) { // Do something return (true, MyOutput); } public void Execute() { if (MyMethod1(100).Correct)

我不熟悉编码和C#,我想知道如果使用元组作为返回值,是否会多次调用一个方法

此描述可能缺少,因为我不是英语母语,因此以下是一些示例代码:

public static (bool Correct, string Output) MyMethod1(int MyArgument)
{
    // Do something
    return (true, MyOutput);
}

public void Execute()
{
    if (MyMethod1(100).Correct)
    {
        Console.WriteLine(MyMethod1(100).Output);
    }
}
所以我想知道我们现在是两次检查整个方法MyMethod1,还是只检查一次,因为参数是相同的

多谢各位


也请让我知道,如果我做错了什么,张贴这个。因为我对SO也是新手。

要使您的方法只执行一次,在这种情况下,您应该像这样存储检索到的方法结果:

public static (bool Correct, string Output) MyMethod1(int MyArgument)
{
    // Do something
    return (true, MyOutput);
}

public void Execute()
{
    (bool correct, string output) result = MyMethod(100);
    if (result.correct)
    {
        Console.WriteLine(result.output);
    }
}

如果对一个方法有两次调用,它将被调用两次。元组与此无关。与任何表达式一样,如果只想对其求值一次,请将其结果存储在变量中:
var(correct,output)=MyMethod1(100)
实际上,该方法在这里被调用了两次,如果不是预期的,则必须使用一个变量来存储结果,以便在调用后使用它来将其用于测试条件和过程。Id您要求某人告诉他们是否可以为您获取某些内容,然后再次要求他们获取。你问过那个人两次了吗?或者,如果你让某人得到一些东西,然后你检查结果,然后检查它呢?你担心(或希望)编译器能够优化调用(记住第一个结果),因为乍一看它们是相同的;编译器不能因为两个原因而假设这种行为:1)它依赖于方法实现,方法实现的结果可能依赖于附加/外部数据。2) 开发人员有责任执行此类优化,如果她愿意的话。。通过这种方式,抖动可以通过内联方法指令优化所有调用;在某些情况下,方法指令甚至可以被结果本身替换,如果它是一个已知的常量值,因为该方法已经返回一个命名值元组,写入
result=MyMethod(100)