Đưa ra mã sau đây và các đề xuất được đưa ra trong câu hỏi này , tôi đã quyết định sửa đổi phương thức ban đầu này và hỏi liệu có bất kỳ giá trị nào trong IEnumarable trả về nó không, nếu không trả về IEnumerable không có giá trị.
Đây là phương pháp:
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
});
}
Vì mọi thứ đều nằm trong tuyên bố hoàn trả, tôi không biết làm thế nào tôi có thể làm điều này. Có công việc nào như vầy không?
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>();
}
}
Phương pháp trên không hoạt động, và trên thực tế, nó không được phép; Tôi chỉ cảm thấy nó minh họa ý định của tôi. Tôi cảm thấy tôi nên xác định rằng mã không hoạt động vì bạn không thể tạo một thể hiện của một lớp trừu tượng.
Đây là mã gọi, tôi không muốn nó nhận được số IE không có giá trị bất cứ lúc nào:
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;
}
}
Cảm ơn bạn đã dành thời gian.