Вы можете использовать кортежи (добавлено в .Net 4). Кортежи в MSDN
Это:
public class MySplitter
{
public MySplitter(string split)
{
var results = split.Split(',');
NamedPartA = results[0];
NamedpartB = results[1];
}
public string NamedPartA { get; private set; }
public string NamedPartB { get; private set; }
}
Может быть достигнуто с помощью чего-то вроде этого:
public Tuple<string,string> SplitIntoVars(string toSplit)
{
string[] split = toSplit.Split(',');
return Tuple.Create(split[0],split[1]);
}
С кортежем вы можете использовать:
var x = SplitIntoVars(arr);
// you can access the items like this: x.Item1 or x.Item2 (and x.Item3 etc.)
Вы также можете создать кортеж для использования Tuple<string,int>
и т. Д.
Также ... Мне не нравятся параметры, поэтому вы эмулируете возвращение нескольких значений с помощью кортежа(и, очевидно, также разных типов).this:
public void SplitIntoVariables(string input, out a, out b, out c)
{
string pieces[] = input.Split(',');
a = pieces[0];
b = pieces[1];
c = pieces[2];
}
превращается в это:
public Tuple<string,string,string> SplitIntoVariables(string[] input)
{
string pieces[] = input.Split(',');
return Tuple.Create(pieces[0],pieces[1],pieces[2]);
}
Другими (более изобретательными) параметрами может быть создание ExpandoObject (динамического), который содержит ваши значения (что-то похожее на ViewBag в ASP).NET MVC)