如何将变量从方法拉到main方法?

时间:2013-03-25 21:24:45

标签: c# methods

我试图将返回变量从一些完全相同的方法中拉出到另一个方法中。我想以一种对计算机有效的方式来做这件事,因为我正在编写一个控制台应用程序,因为这是我知道如何使用的主要内容。这样做的原因是使用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();

2 个答案:

答案 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();
}