Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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# 在Windows Phone中使用列表_C# - Fatal编程技术网

C# 在Windows Phone中使用列表

C# 在Windows Phone中使用列表,c#,C#,由于某些原因,只有我的最后一项被添加到我的列表中。如何确保将每个诊所添加到列表中 List<Clinics> _clinics = new List<Clinics>(); Clinics _newClinic = new Clinics(); _newClinic._id = "1"; _newClinic._Name = "Test Clinic 1"; _newClinic._Phone = "(121) 123

由于某些原因,只有我的最后一项被添加到我的列表中。如何确保将每个诊所添加到列表中

List<Clinics> _clinics = new List<Clinics>();
Clinics _newClinic = new Clinics();

_newClinic._id = "1";
_newClinic._Name = "Test Clinic 1";
_newClinic._Phone = "(121) 123 348";

_clinics.Add(_newClinic);
         
_newClinic._id = "2";
_newClinic._Name = "Test Clinic 2";
_newClinic._Phone = "(121) 123 348";

_clinics.Add(_newClinic);
_newClinic._id = "3";
_newClinic._Name = "Test Clinic 3";
_newClinic._Phone = "(121) 123 348";

_clinics.Add(_newClinic);

MyMap.AddPushpin(new Windows.Devices.Geolocation.BasicGeoposition() { Latitude = 51.5, Longitude = -0.05 }, "1");
    MyMap.AddPushpin(new Windows.Devices.Geolocation.BasicGeoposition() { Latitude = 51.503399, Longitude = -0.119519 }, "2");
    MyMap.AddPushpin(new Windows.Devices.Geolocation.BasicGeoposition() { Latitude = 51.5057, Longitude = -0.1419 }, "3");

    searchList.ItemsSource= _clinics.ToList();
List\u clinics=newlist();
诊所_newClinic=新诊所();
_新诊所。_id=“1”;
_新建诊所。_Name=“测试诊所1”;
_新诊所._Phone=“(121)123 348”;
_诊所。添加(_newClinic);
_新诊所。_id=“2”;
_新建诊所。_Name=“测试诊所2”;
_新诊所._Phone=“(121)123 348”;
_诊所。添加(_newClinic);
_新诊所。_id=“3”;
_newClinic.\u Name=“测试诊所3”;
_新诊所._Phone=“(121)123 348”;
_诊所。添加(_newClinic);
MyMap.AddPushpin(新的Windows.Devices.Geolocation.BasicGeoposition(){纬度=51.5,经度=-0.05},“1”);
MyMap.AddPushpin(新的Windows.Devices.Geolocation.BasicGeoposition(){纬度=51.503399,经度=-0.119519},“2”);
MyMap.AddPushpin(新的Windows.Devices.Geolocation.BasicGeoposition(){纬度=51.5057,经度=-0.1419},“3”);
searchList.ItemsSource=_clinics.ToList();
TLDR

您需要创建
诊所的新实例
,在这种情况下,您只是在更新列表中的现有实例

_clinics.Add(new Clinics() { _id = "3", /*etc*/ });

你所拥有的是:

List<Clinics> _clinics = new List<Clinics>();
Clinics _newClinic = new Clinics();
_newClinic._id = "1";
_newClinic._Name = "Test Clinic 1";
_newClinic._Phone = "(121) 123 348";
现在您再次添加相同的诊所-ID 1。 列表中有两个项目都相同

_newClinic._id = "2";
_newClinic._Name = "Test Clinic 2";
_newClinic._Phone = "(121) 123 348";
现在列表中的实例(两次)已更新到clinicID2的详细信息

只有一个
\u newClinic
实例和一个包含它两次的列表

等等

正如我在开始时所说,您需要为每个诊所创建一个新实例


此外,C#约定是使用PascalCase命名从类型中公开属性

class Clinic //Singular?
{
    private string _id; //maybe int?
    public string Id { get { return _id; } set { _id = value; } }
}

网上有很多关于用属性封装字段的优点的文章

您每次都在更新同一对象的字段。要获得真正需要的行为,请确保在添加前一个对象后创建新对象:

_clinics.Add(_newClinic);

_newClinic = new Clinics();
_newClinic._id = ...

作为一个旁注,考虑将您的类改名为代码>诊所< /COD> > <代码>诊所> /代码>,因为它只代表一个临床对象。

< p>您所说的代码只更新了新的NeXORT对象。每次需要添加新对象时,都需要创建新对象。您可以使用列表初始化:

List<Clinics> _clinics = new List<Clinics>
{
     new Clinic { _id = 1, _Name = "Test Clinic 1", _Phone = "(121) 123 348" }, 
     new Clinic { _id = 2, _Name = "Test Clinic 2", _Phone = "(121) 123 348" },  
     new Clinic { _id = 3, _Name = "Test Clinic 3", _Phone = "(121) 123 348" }
};
List\u诊所=新列表
{
新诊所{u id=1,_Name=“测试诊所1”,_Phone=“(121)123 348”},
新诊所{u id=2,_Name=“测试诊所2”,_Phone=“(121)123 348”},
新诊所{u id=3,_Name=“测试诊所3”,_Phone=“(121)123 348”}
};

如前所述,这只是一段模拟代码,只是为发布中的更多thoru客户提供的一个快速演示
List<Clinics> _clinics = new List<Clinics>
{
     new Clinic { _id = 1, _Name = "Test Clinic 1", _Phone = "(121) 123 348" }, 
     new Clinic { _id = 2, _Name = "Test Clinic 2", _Phone = "(121) 123 348" },  
     new Clinic { _id = 3, _Name = "Test Clinic 3", _Phone = "(121) 123 348" }
};