-2

このように設定されたいくつかのメソッドから戻り変数を別のメソッドにプルしようとしています。私はコンソールアプリケーションを書いているので、これが現在の使用方法を知っている主なものであるため、コンピューターにとって効率的な方法でそれを実行したいと思います。これは、SQLを使用してデータベースに接続するためですが、接続は接続テスト内で行われ、メインメソッド内で接続が保持されるため、変数の受け渡しについてサポートが必要です。関連するコードは次のとおりです。

 //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";
    }
}

Ref/Outパラメータを作成する

単一のデータ型を返すことができ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);
...

}

すべてを1つの方法で取得します。

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 に答える