Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加到列表将替换以前的元素_C#_List_Windows 8 - Fatal编程技术网

C# 添加到列表将替换以前的元素

C# 添加到列表将替换以前的元素,c#,list,windows-8,C#,List,Windows 8,我有一个列表,在GridView中用作DataContext 此列表是使用以下代码创建的: private void initializeStarredHub() { List<StarredData> starredList = new List<StarredData>(); starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sam

我有一个列表,在GridView中用作DataContext

此列表是使用以下代码创建的:

        private void initializeStarredHub()
    {
        List<StarredData> starredList = new List<StarredData>();
        starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sample Data 1"));
        starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sample Data 2"));
        StarredHub.DataContext = starredList;
    }
上面的最终结果是starredList[0]和starredList[1]都将“示例数据2”作为StarredTitle,这意味着所有以前的值都被最新的集覆盖


为什么会发生这种情况以及如何修复它?

这是因为您在
StarredData
类中声明了
static
成员,只需删除
static
关键字:

public class StarredData
{
    public string StarredImage { get; set; }
    public string StarredTitle { get; set; }

    public StarredData() { }

    public StarredData(string itemImageSet, string itemNameSet)
    {
        StarredImage = itemImageSet;
        StarredTitle = itemNameSet;
    }
}

您可以通过从成员定义中删除
static
关键字来修复它

无论创建了多少个类实例,静态成员只存在一个副本

请点击此处:

public class StarredData
{
    public string StarredImage { get; set; }
    public string StarredTitle { get; set; }

    public StarredData() { }

    public StarredData(string itemImageSet, string itemNameSet)
    {
        StarredImage = itemImageSet;
        StarredTitle = itemNameSet;
    }
}