小编sup*_*war的帖子

为什么对方法的第二个参数使用await运算符会影响第一个参数的值?

以下C#程序产生意外输出.我希望看到:

值1:25,值2:10

值1:10,值2:25

但相反,我明白了

值1:0,值2:10

值1:10,值2:25

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            DoWork().Wait();

            Console.ReadLine();
        }

        private async static Task DoWork()
        {
            SomeClass foo = new SomeClass()
            {
                MyValue = 25.0f
            };

            PrintTwoValues(foo.MyValue, await GetValue());
            PrintTwoValues(await GetValue(), foo.MyValue);
        }

        static void PrintTwoValues(float value1, float value2)
        {
            Console.WriteLine("Value1: {0}, Value2: {1}", value1, value2);
        }

        static Task<float> GetValue()
        {
            return Task.Factory.StartNew(() =>
                {
                    return 10.0f;
                });
        }

        class SomeClass
        {
            private float myValue;

            public float MyValue
            {
                get …
Run Code Online (Sandbox Code Playgroud)

c# parameters arguments parameter-passing async-await

8
推荐指数
1
解决办法
132
查看次数