C# 无法理解静态 属性 的工作原理

C# unable to understand how static property works

我是 C# 语言的新手。我创建了一个用户表单并在其上添加了一个列表视图(将其更改为 public)。现在我添加了一个像这样的静态类

public static class listView
    {
        private static ListView.ListViewItemCollection litm;
        public static ListView.ListViewItemCollection listItems
        {

            get
            {
                Form1 frm = new Form1();
                return frm.listView1.Items;
            }

            set
            {
                litm = value;
            }
        }
    }

现在在按钮后面添加了以下代码,

 private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(listView.listItems.Count.ToString()); //Works
            listView.listItems.Add("Fail"); //Fails
            this.listView1.Items.Add("HH"); //Works
        }

在这里,我可以使用获取项目的计数。我认为 get 有效。但是当我尝试添加一个新项目时,它什么也不做。没有错误,但没有添加任何条目。

我很想知道为什么会这样。任何指导表示赞赏。

在 getter for 属性 中,您正在创建表单 1 的新实例并向其添加项目。

与静态或非静态无关

看看这个:

get
{
    Form1 frm = new Form1();
    return frm.listView1.Items;
}

所以当你

listView.listItems.Add("Fail");

您正在向表单 1 的列表视图中添加您看不到的项目。

事实上,每次您访问 listView.listItems 属性,您都在创建表单 1 的新实例并向其列表视图 1 添加一个项目。

但在这一行中:

this.listView1.Items.Add("HH");

您正在将项目添加到您正在查看的列表视图中。

要了解静态: