访问函数返回类型为C#中的元组

时间:2013-09-04 11:20:07

标签: c# visual-studio-2010 c#-4.0 tuples

这是一个非常天真的问题,但我之前没有使用过元组,所以要问这个问题。 我在访问函数返回值时遇到了一些问题,这是另一个函数中的元组。

这是我的代码:

  public Tuple<string, string, string> CreateTransaction()
        {
            var tCompResp = new Tuple<string, string, string>(T, TCode, Message);
            return tCompResp;
}

现在我不知道如何在其他页面

中访问上述函数的返回值
  var tResp = new Tuple<string, string, string>((objManager.CreateTransaction()).Item1, (objManager.CreateTransaction()).Item2, (objManager.CreateTransaction()).Item3);

在上面的行我可以访问返回元组,但问题是我调用相同的函数(CreateTransaction())3次

所以我的问题是如何在单次调用中获取函数的元组返回值?

 String tRespon = objManager.CreateTransaction()   ///Suppose if return type is string.

我将在另一个函数中使用此值

Update(tRespon.Item1, tRespon.Item2, tRespon.Item3);

3 个答案:

答案 0 :(得分:2)

你不需要创建一个新的元组:

   var tResp = objManager.CreateTransaction();
   Update(tResp.Item1, tResp.Item2, tResp.Item3);

CreateTransaction()已经返回了您可以立即使用的Tuple

答案 1 :(得分:2)

更短:

var tRespon = objManager.CreateTransaction();
Update(tRespon.Item1,tRespon.Item2,tRespon.Item3);

答案 2 :(得分:1)

试试这个:

Tuple<string,string,string> tRespon = objManager.CreateTransaction();

Update(tRespon.Item1,tRespon.Item2,tRespon.Item3);

CreateTransaction返回Tuple<string,string,string>而不是string

始终可以使用var代替Tuple<string,string,string>

var tRespon = objManager.CreateTransaction();

请注意var只是编写它的另一种方式,而不是类型。

但更好的方法是使用新类来返回这些数据:

public class ConnectionInfo
{
   public string T;
   public string Code;
   public string Message;
}

public ConnectionInfo CreateTransaction()
{
     var tCompResp = new ConnectionInfo{T=T, Code=TCode, Message=Message};
     return tCompResp;
}

然后

var tRespon = objManager.CreateTransaction();
Update(tResp.T, tResp.Code, tResp.Message);