Dengan kode berikut dan saran yang diberikan dalam pertanyaan ini , saya telah memutuskan untuk memodifikasi metode asli ini dan bertanya apakah ada nilai dalam IEnumarable mengembalikannya, jika tidak mengembalikan IEnumerable tanpa nilai.
Inilah metodenya:
public IEnumerable<Friend> FindFriends()
{
//Many thanks to Rex-M for his help with this one.
//https://stackoverflow.com/users/67/rex-m
return doc.Descendants("user").Select(user => new Friend
{
ID = user.Element("id").Value,
Name = user.Element("name").Value,
URL = user.Element("url").Value,
Photo = user.Element("photo").Value
});
}
Karena semuanya ada di dalam pernyataan kembali, saya tidak tahu bagaimana saya bisa melakukan ini. Apakah sesuatu seperti ini berfungsi?
public IEnumerable<Friend> FindFriends()
{
//Many thanks to Rex-M for his help with this one.
//https://stackoverflow.com/users/67/rex-m
if (userExists)
{
return doc.Descendants("user").Select(user => new Friend
{
ID = user.Element("id").Value,
Name = user.Element("name").Value,
URL = user.Element("url").Value,
Photo = user.Element("photo").Value
});
}
else
{
return new IEnumerable<Friend>();
}
}
Metode di atas tidak bekerja, dan sebenarnya itu tidak seharusnya; Saya hanya merasa itu menggambarkan niat saya. Saya merasa saya harus menentukan bahwa kode tidak berfungsi karena Anda tidak dapat membuat turunan dari kelas abstrak.
Ini adalah kode panggilan, saya tidak ingin menerima IEnumerable nol kapan saja:
private void SetUserFriends(IEnumerable<Friend> list)
{
int x = 40;
int y = 3;
foreach (Friend friend in list)
{
FriendControl control = new FriendControl();
control.ID = friend.ID;
control.URL = friend.URL;
control.SetID(friend.ID);
control.SetName(friend.Name);
control.SetImage(friend.Photo);
control.Location = new Point(x, y);
panel2.Controls.Add(control);
y = y + control.Height + 4;
}
}
Terima kasih atas waktu Anda.