我对收藏的概念很陌生.我有一个类object(Officer),它有几个属性,其中三个构成了官员的名字.
我还有一个单独的类对象Company,它被定位在Officer对象上方.A company包含一系列官员,因此要显示官员的姓名,我需要两者之间的某种形式的参考:
private List<Officer> officerList;
public void addOfficer(Officer off)
{
officerList.Add(off);
}
Run Code Online (Sandbox Code Playgroud)
现在,要实际将该数据返回到另一个类,我需要创建一个列表(无意义),创建大量Officer对象(效率低下)或返回一个集合.
public void getOfficerNames(out *something* names) //I want to use a collection
//here... I think
{
foreach (Officer o in officerList)
{
names = o.Title
+ o.ForeName
+ o.SurName;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我所拥有的,因为我很难理解
a)如何实现集合和
b)如果这是正确的事情.
public void GetOfficerNames(List<string> names)
{
foreach (Officer o in officerList)
{
names.Add(o.Title + o.ForeName + o.SurName);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,只返回名称将更具可读性:
public IEnumerable<string> GetOfficerNames()
{
return officerList.Select(o => o.Title + o.ForeName + o.SurName);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
var names = new List<string>();
//...
names.AddRange(GetOfficerNames());
Run Code Online (Sandbox Code Playgroud)
要不就:
var names = GetOfficerNames().ToList();
Run Code Online (Sandbox Code Playgroud)
out主要用于值类型,使它们通过引用传递.但是,如果需要初始化它们,它也可以与引用类型一起使用.因此,在您的情况下,示例将如下所示:
public void GetOfficerNames(out List<string> names)
{
names = new List<string>();
foreach (Officer o in officerList)
{
names.Add(o.Title + o.ForeName + o.SurName);
}
}
Run Code Online (Sandbox Code Playgroud)
然后它会像这样使用:
List<string> officerNames; // uninitialized
GetOfficerNames(out officerNames);
foreach (var name in officerNames) // out guarantees officerNames
{ // will be initialized here
//...
}
Run Code Online (Sandbox Code Playgroud)
然而,这很少需要,不是非常易读,因此不鼓励并且很少使用.
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |