gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:23:31 24 4
gpt4 key购买 nike

我是 C# 语言的新手。我创建了一个用户表单并在其上添加了一个 ListView (将其公开)。现在我添加了一个像这样的静态类

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 中,您正在创建表单 1 的新实例并向其添加项目。

它与静态或非静态无关。

看看这个:

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

所以当你

listView.listItems.Add("Fail");

您正在将您看不到的项目添加到表单 1 的 ListView 中。

事实上,每次您访问 listView.listItems 属性时,您都在创建一个新的 form 1 实例并将一个项目添加到它的 listview1。

但是在这一行中:

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

您正在将项目添加到您看到的 ListView 中。

要了解静态:

关于C# 无法理解静态属性的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com