如何在C#中的一个方法中返回多个值?这种情况是否可行?

4

我一直在使用Visual Studio中的C#编写软件。但我想在我的方法中返回多个值,如何在C#中返回多个值?是否有可能?


1
你需要使用元组,请参见上面的答案。 - TAHA SULTAN TEMURI
1
为了代码的清晰度,最好创建一个类来保存数据并返回它。否则,您可以使用相同类型的值的数组或元组,如果您不关心类型安全性,则可以使用对象数组或匿名对象。 - CrudaLilium
据我所知,匿名类型是有类型的。 - Cleptus
@bradbury9 你不能定义匿名返回类型,为了能够编译,你必须将返回类型指定为 object 或 dynamic,从而失去类型安全性。 - CrudaLilium
@CrudaLilium 尽管在本地使用时它们是类型安全的,但在这种特定情况下,你是正确的。 - Cleptus
4个回答

6
您可以使用.NET 4.0及以上版本的元组:
例如:
public Tuple<int, int> GetMultipleValue()
{
    return Tuple.Create(1,2);
}

现在更容易了。

例如:

public (int, int) GetMultipleValue()
{
    return (1,2);
}

2

你想要返回单一类型的值吗?那么你可以返回一个值数组。如果你想要返回不同类型的值,你可以创建一个带有指定参数的对象、结构体或元组,然后将这些值赋给这些参数。创建对象后,你可以从方法中返回它。

使用对象的示例:

public class DataContainer
{
    public string stringType { get; set; }
    public int intType { get; set; }
    public bool boolType {get; set}

    public DataContainer(string string_type, int int__type, bool bool_type)
    {
       stringType = string_type;
       intType = int__type;
       boolType = bool_type;
    }
}

使用结构体的示例:

public struct DataContainer
{  
    public stringstringType;  
    public int intType;  
    public bool boolType;  
}  

一个元组的例子:

var DataContainer= new Tuple<string, int, bool>(stringValue, intValue, boolValue);

3
尽量避免回答重复的问题,Natalia的评论中提供了已经有很多例子。请参考该评论内容。 - Cleptus

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接