รับรหัสต่อไปนี้และคำแนะนำที่ให้ไว้ในคำถามนี้ฉันตัดสินใจที่จะแก้ไขวิธีการดั้งเดิมนี้และถามว่ามีค่าใด ๆ ใน IEnumarable ส่งคืนหรือไม่ถ้าไม่คืน IEnumerable ที่ไม่มีค่า
นี่คือวิธีการ:
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
});
}
เนื่องจากทุกอย่างอยู่ในแถลงการณ์ส่งคืนฉันจึงไม่รู้ว่าจะทำอย่างไร อยากได้สิ่งนี้ไหม
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>();
}
}
วิธีการดังกล่าวไม่ได้ผลและในความเป็นจริงมันไม่ควรจะ; ฉันแค่รู้สึกว่ามันแสดงให้เห็นถึงความตั้งใจของฉัน ฉันรู้สึกว่าฉันควรระบุว่ารหัสไม่ทำงานเพราะคุณไม่สามารถสร้างอินสแตนซ์ของคลาสนามธรรม
นี่คือรหัสการโทรฉันไม่ต้องการให้มันรับ IEnumerable ได้ตลอดเวลา:
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;
}
}
ขอขอบคุณสำหรับเวลาของคุณ.