这段代码如何编译并运行无错误?
private void queueToolStripMenuItem_Click(object sender, EventArgs e)
{
//Class name MDPlayer
Playlist.QueueList.Add(tempPlayList[songView.SelectedIndex]);
Playlist.GetQueue = null;
QueueCombobox.Items.Clear();
foreach (PlayListData pld in Playlist.QueueList)
{
QueueCombobox.Items.Add(pld.Track);
}
}
class Playlist
{
private static List<PlayListData> queueList = new List<PlayListData>();
public static List<PlayListData> QueueList
{
get { return queueList;}
}
}
如何通过甚至没有setter的公共属性QueueList添加到private的queueList?
答案 0 :(得分:2)
您可以在属性getter的返回值上调用方法。
您的属性getter返回List<>
。 List<>
定义了Add
方法。因此,您可以在您要求的Add
上调用List<>
方法。
请注意,无法从listQueue
类外部PlayList
分配新值,因为它是private
。
此外,您无法为ListQueue
属性分配新值,因为它没有setter访问器
这将失败:PlayList.QueueList = new List<PlayListData>();
答案 1 :(得分:1)
因为你是通过getter添加到列表中的。您没有将基础私有变量设置为任何内容。您可以QueueList.Add()
,但不能QueueList = newList
。
答案 2 :(得分:0)
当你从getter获取一个值时,它会返回整个类,并且该类是可以改变的。如果要将整个变量设置为完全不同的类,则只需要一个setter。
<强>摘要强> 设置整个变量时只需要使用setter。
<强> CAN 强>
Playlist.QueueList.Add(tempPlayList[songView.SelectedIndex]);
<强>不能强>
Playlist.QueueList = new List<PlayListData>();