为什么结构中的这个值根本没有变化?

see*_*ker 5 c# interface

我相信这是一个非常简单的问题.任何人都可以解释为什么这段代码输出1000而不是1050

public class Program
    {
        public static void Main()
        {
            Bus b = new Bus(1000);
            ((Car)b).IncreaseVolume(50);
            Console.WriteLine(b.GetVolume());
        }
    }

    public interface Car
    {
        int GetVolume();
        void IncreaseVolume(int amount);
    }

    public struct Bus : Car
    {
        private int volume;

        public Bus(int volume)
        {
            this.volume = volume;
        }

        public int GetVolume()
        {
            return volume;
        }

        public void IncreaseVolume(int amount)
        {
            volume += amount;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

dtb*_*dtb 8

将值type(struct)转换为接口框的值.所以你要在值的盒装副本上调用方法,而不是在值本身上调用.