c#/。net?
中是否需要多个返回参数public string, string GetFirstNameAndLastName(int id)
{
var person = from p in People
where p.Id = id
select p;
return(p.FirstName, p.LastName);
}
用法:
public void Main(string[] args)
{
string firstName, lastName;
(firstName, lastName) = GetFirstNameAndLastName(1);
Console.WriteLine(firstName + ", " + lastName);
}
答案 0 :(得分:7)
您可以使用C#4.0中的Tuple以轻量级方式实现此目的
public Tuple<string, string> GetFirstNameAndLastName(int id)
{
var person = from p in People
where p.Id = id
select p;
return new Tuple<string, string>(p.FirstName, p.LastName);
// OR
// return Tuple.Create(p.FirstName, p.LastName);
}
System.Tuple
还具有与F#本机元组类型互操作的好处(好吧,它是F#的本机元组类型,恰好是F#特定的语法支持,用于声明返回它们的元组和函数)。 / p>
鉴于此处存在多种方法:System.Tuple
,多个out
参数或返回具有FirstName
和LastName
属性的POCO,我怀疑Anders Hejlsberg可能不是将为多个返回值添加显式支持。
答案 1 :(得分:5)
不,只需使用out
参数。
public void GetFirstNameAndLastName(int id, out string first, out string last)
{
var person = from p in People
where p.Id = id
select p;
first = p.FirstName;
last = p.LastName;
}
答案 2 :(得分:4)
根据@James Webster的建议,您可以使用元组,也可以使用dynamic
和ExpandoObject
class Program
{
static void Main(string[] args)
{
var d = GetUserDynamic();
Console.WriteLine("{0}.{1}", d.FirstName, d.LastName);
}
private static dynamic GetUserDynamic()
{
dynamic d = new ExpandoObject();
d.FirstName = "amandeep";
d.LastName = "tur";
return d;
}
}
答案 3 :(得分:1)
没有。如果元素相关,则应返回更有用的数据类型,如类。
public MyPersonClassGetFirstNameAndLastName(int id)
{
var person = from p in People
where p.Id = id
select p;
MyPersonClassreturnValue = new MyPersonClass;
returnValue.FirstName = p.FirstName;
returnValue.LastName= p.LastName;
return returnValue;
}
答案 4 :(得分:0)
除了其他答案中指出的可能性之外,还有更多方法可以实现这一目标:
答案 5 :(得分:0)
取决于具体情况。在您的情况下,您可以返回整个人的记录,
public string, string GetFirstNameAndLastName(int id)
{
var person = from p in People
where p.Id = id
select p;
return person;
}
或者如果情况需要,您可以创建自己的数据类型。
答案 6 :(得分:-1)
你可以这样做你想做的事:
public void GetFirstNameAndLastName(int id, out string firstName, out string lastName)
{
var person = from p in People
where p.Id = id
select p;
firstName = p.FirstName;
lastName = p.LastName;
}
然后像这样调用它:
public void Main(string[] args)
{
string firstName, lastName;
GetFirstNameAndLastName(1, out firstName, out lastName);
Console.WriteLine(firstName + ", " + lastName);
}