-2

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

2 回答 2

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
}
于 2013-03-25T21:52:17.387 回答
0

这是如何使用out参数的示例代码

在你的Main()

{
...
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();
}
于 2013-03-25T21:51:07.273 回答