返回KeyValuePair或在C#中使用out变量?

Guy*_*Guy 6 c#

我有一个需要返回两个字符串的函数.我考虑过两种不同的方法:

string first = "this is first";
string second = "this is second";
KeyValuePair<string, string> ReturnPair()
{
    return new KeyValuePair<string, string>(first, second);
}
string ReturnOne(out string other)
{
    other = second;
    return first;
}
Run Code Online (Sandbox Code Playgroud)

我想使用KeyValuePair <>方法,但我觉得我误用了创建这个对象的目的.

我的问题:

  1. 在这个例子中有没有更好的方法返回2个字符串?
  2. 返回KeyValuePair有什么问题吗?

Meh*_*ari 20

虽然返回时没有任何技术上的错误KeyValuePair,但你返回的东西在概念上并不是一个"键值"对.这是一对简单的.

或者,您可以使用Tuple.NET 4.0中提供的或同时声明您自己的结构.

我通常建议反对out返回元组的参数.特别是在使用LINQ和函数式语言结构时,使用out参数非常繁琐.


Eri*_* J. 6

如果数据在逻辑上属于一个,但一个逻辑上不是另一个的密钥,我将定义一个封装它的新类型.

如果一个是另一个的关键,我会使用NameValuePair.


Cha*_*ion 6

这将是我的首选方法.KeyValuePair非常冗长.

String[] ReturnPair()
{
    return new [] { first, second };
}
Run Code Online (Sandbox Code Playgroud)