相同的变量,不同的结果

vpl*_*usm 2 c#

我刚开始学习c#而且我遇到了令人困惑的事情,我希望有人可以向我解释:)

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int Md = 0;

        private void cmdAnzeigen1_Click(object sender, EventArgs e)
        {
            int x = 0;
            Md = Md + 1;
            x = x + 1;
            lblErgebnis.Text = "x: " + x + "\n" + "Gx:" + Md;       
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么Md总是增加1,但x不增加(保持在1)?我不明白,它们都是相同的变量.

Jon*_*eet 7

Md是一个在任何方法之外声明的实例变量.它是对象状态的一部分,因此只要对象"活着",它就"活着"(并保持其值).不同的实例Form1会有自Md变量.

x是一个局部变量 - 每次调用方法时都有一个新变量,它始终以值0开始.

如果这还不够解释,请参考一本很好的介绍性C#书或教程 - 解释变量的一切对于Stack Overflow来说有点多,这对于处理特定问题比学习编程语言的基础更重要.