首页 > 解决方案 > 在 C# 中返回多个值的函数的方法签名

问题描述

我有下面的方法调用,它返回多个值,而且该函数是异步类型的。

var (averageSalary, numberOfEmployee) = await SomeCalculation(0L, 10, 0L == 10L);

现在我需要编写函数的方法签名和返回类型。下面是代码:

private static void Main(string[] args)
    {
        var (averageSalary, numberOfEmployee) = await SomeCalculation(0L, 10, 0L == 10L);
    }

    public static async Task<(long averageSalary, long numberOfEmployee)> SomeCalculation(long num1, long num2, bool b)
    {
        long averageSalary = num1;
        long numberOfEmployee = num2;

        return (averageSalary, numberOfEmployee);
    }

但问题是当方法在 main 方法中调用时,显示以下错误。

'await' 运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。

谁能给我写正确方法签名的建议。

标签: c#return-value

解决方案


您的代码应如下所示:

public static async Task<(long averageSalary, long numberOfEmployee)> SomeCalculation(long num1, long num2, bool b)
{
    long averageSalary = num1;
    long numberOfEmployee = num2;

    return (averageSalary, numberOfEmployee);
}

static async Task Main(string[] args)
{
    var (averageSalary, numberOfEmployee) = await SomeCalculation(0L, 10, 0L == 10L);
}

您可能需要将 Visual Studio 中的 C# 版本重置为最新版本(7.1 或更高版本)。单击项目,鼠标右键,单击“构建”,然后单击“高级”按钮。它在这里解释。


推荐阅读