我是 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
对于 Id
和DateTime
日期。您可以使用 ...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/