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" }
};