C# 返回元组 - 就像 Python

标签 c# python return tuples

我是 OOP 和 C# 新手。我有很强的 Python 背景,我想知道 C# 中是否有类似的东西

#Python

def outputSmth():
    num1 = 3
    num2 = 3
    str1 = "Hi"

    return (num1, num2, str1)  #Returning a tuple that can later be accessed
                               # by index

如果没有直接的等价物(我怀疑是否存在),那么最正确的方法是什么?

这是我的功能:

//C#    
static tuple PrintUserCreationMnu()
    {
        Console.Clear();
        Console.WriteLine("----  Create the user ----\n");
        Console.Write("User ID               : "); string usrID = Console.ReadLine();
        Console.Write("First Name            : "); string f_Name = Console.ReadLine();
        Console.Write("Last Name             : "); string l_Name = Console.ReadLine();
        Console.Write("Expected leaving date : "); string l_Date = Console.ReadLine();

        return ; //Here I'd like to return all my inputted values
    }

谢谢!

最佳答案

您可以简单地返回 string[]List<string> :

static string[] PrintUserCreationMnu()
{
       // ...
    return new[]{ usrID, f_Name, l_Name, l_Date};
}

但一般来说,创建自定义类型 User 会更好具有有意义的属性并返回它。然后您可以通过属性而不是索引来访问它们:

static User PrintUserCreationMnu()
{
       // ...
    return new User{ UserId = usrID, FirstName = f_Name, LastName = l_Name, Date = l_Date};
}

更好的是使用正确的类型,int对于 IdDateTime日期。您可以使用 ...TryParse方法(例如 int.TryParse )以确保格式有效。

<小时/>

为了完整起见,是的,.NET 还具有 tuples 。但我不会经常使用它们,因为不清楚 Item4 是什么?是。在查看源代码之前没有人知道这一点。因此,从方法返回的类型不是一个好的类型(如果是 public 则更差)。然而,它是:

static Tuple<string, string, string, string> PrintUserCreationMnu()
{
       // ...
    return Tuple.Create(usrID, f_Name, l_Name, l_Date);
}

关于C# 返回元组 - 就像 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657476/

相关文章:

C# HashSet VS C++ std::unordered_set 自定义类键。 C++ 更慢……不可能。如何达到C#的速度?

c# - asp.net 的 PayPal IPN 沙箱错误

python - 如何从包含 NaN 的另一个框架中的列表中对 pandas 数据框架中的列进行子集化?

c - 从 C 函数返回数组

c# - 我的 C# 项目中引用的 DLL 正在尝试访问互联网

python - 使用数组提高Python代码的效率

python - PySide2 与 qml 作为 ui

python - 如何在 Python 中让我的递归函数返回 0

java - toString 为特定类的每个对象返回相同的字符串?

c# - RegEx 捕获重复字段?