我试图将返回变量从一些完全相同的方法中拉出到另一个方法中。我想以一种对计算机有效的方式来做这件事,因为我正在编写一个控制台应用程序,因为这是我知道如何使用的主要内容。这样做的原因是使用SQL连接到数据库,但我的连接将在连接测试中,然后将连接在main方法中,所以我需要帮助传递变量。这是相关的代码。
//Create a method to get database name
public static string databname()
{
Console.WriteLine("Enter the database name.\n");
string dbasename = Console.ReadLine();
Console.WriteLine();
return dbasename;
}
//Create a method to get database password
public static string databpass()
{
Console.WriteLine("Enter database password.\n");
string dbasepass = Console.ReadLine();
Console.WriteLine();
return dbasepass;
}
//Create a method to get username
public static string usernames()
{
Console.WriteLine("Enter access username.\n");
string username = Console.ReadLine();
Console.WriteLine();
return username;
}
//Create a method to get user's password
public static string pass()
{
Console.WriteLine("Enter access password.\n");
string password = Console.ReadLine();
Console.WriteLine();
return password;
}
我想尝试将上述方法中的变量传递给下面的地方,因为我不知道如何在C#中。我已经尝试过查找教程和代码片段,到目前为止还没有一个对我有用。
//Try to run program
try
{
//Create display for user to enter info through the methods
string databaseName = databname();
string databasePass = databpass();
string username = usernames();
string password = pass();
答案 0 :(得分:2)
你有几个方法可以从一个方法返回多个数据,这是我认为你应该考虑的选项顺序。
制作复杂的返回类型
您可以创建一个表示所需数据的复杂类型,然后返回该类型的实例。在我看来,这通常是你应该拍摄的模式。例如:
public class SomeType
{
public string Password { get; set; }
public string SomeOtherValue { get; set; }
}
你的方法是这样的:
public SomeType pass()
{
SomeType instance = new SomeType();
instance.Password = // get your password
instance.SomeOtherValue = // get another value
return instance;
}
设置全局/实例变量
在对象内部,您可以在代码中设置可以读取的共享变量,只要您处于相同的范围级别即可。例如:
public class Sample
{
public static string _sharedVariable = string.Empty;
public static void DoSomething()
{
string result = DoSomethingElse();
// Can access _sharedVariable here
}
protected static string DoSomething()
{
_sharedVariable = "hello world";
return "sup";
}
}
制作参考/输出参数
您可以返回单个数据类型,并将参数指定为out
参数,这些参数是指定由方法返回/更改的参数。当方法的返回类型需要是特定类型或者您试图强制执行某种API约束时,此方法实际上应仅在特定实例中使用。例如:
int outputGuy = 0;
string password = pass(out outputGuy);
你的方法看起来像这样:
public string pass(out string outputGuy)
{
outputGuy = "some string"; // compiler error if you dont set this guy!
return // some password
}
答案 1 :(得分:0)
以下是如何使用out
参数
{
...
string name,pass;
GetInputData(out name, out pass);
...
}
全部使用一种方法:
public static void GetInputData(out string pass, out string name)
{
Console.WriteLine("Enter name:");
name = Console.ReadLine();
Console.WriteLine("Enter pass:");
pass = Console.ReadLine();
}