Friday 15 March 2013

c# - Collection as out parameter -



c# - Collection as out parameter -

i'm new concept of collections. have class object (officer) has several attributes, 3 of form name of officer.

i have separate class object called company, heirarchially positioned above officer object. company contains selection of officers, display names of officers need form of reference between two:

private list<officer> officerlist; public void addofficer(officer off) { officerlist.add(off); }

now, homecoming info class, need either create list (pointless), create big number of officer objects (inefficient), or homecoming collection.

public void getofficernames(out *something* names) //i want utilize collection //here... think { foreach (officer o in officerlist) { names = o.title + o.forename + o.surname; } }

that's far i've got, i'm having difficulty understanding a) how implement collection and b) if it's right thing do.

you don't need out modify reference type passed function, suffice:

public void getofficernames(list<string> names) { foreach (officer o in officerlist) { names.add(o.title + o.forename + o.surname); } }

also, more readable homecoming names:

public ienumerable<string> getofficernames() { homecoming officerlist.select(o => o.title + o.forename + o.surname); }

then can utilize this:

var names = new list<string>(); //... names.addrange(getofficernames());

or just:

var names = getofficernames().tolist();

out used value types, make them beingness passed reference. may used reference types if need initialize them. so, in case illustration this:

public void getofficernames(out list<string> names) { names = new list<string>(); foreach (officer o in officerlist) { names.add(o.title + o.forename + o.surname); } }

and used this:

list<string> officernames; // uninitialized getofficernames(out officernames); foreach (var name in officernames) // out guarantees officernames { // initialized here //... }

this needed, not readable, , discouraged , used.

c# collections

No comments:

Post a Comment