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");
您正在将项目添加到您正在查看的列表视图中。
要了解静态:
我是 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");
您正在将项目添加到您正在查看的列表视图中。
要了解静态: