2017-04-06 1 views
-3
public static void Introduction{ 

     Console.WriteLine("Welcome"); 

     string MyName = ""; 

     Console.Write("What's your name ? : "); 
      MyName = Console.ReadLine(); 
     Console.WriteLine("Hey {0},welcome to the quiz! ", MyName); 

     Console.ReadLine(); 
    } 
    //Quiz introduction 

public static void FstQuestion(){ 

    //code 

    if(...) 
    { 
    Console.WriteLine(" That's correct,{0} ! ",MyName); 
    } 

    else 
     Console.WriteLine(" Keep trying,{0} ",MyName); 

}

に1つのメソッドから文字列変数にアクセスするので、私は私がしたい、しかし、私は質問があなたが見ることができる別のmethods.Asになりたい、C#でクイズを作りたいですユーザーの名前で変数を保存し、必要なときにいつでも使用してください。問題は、別のメソッドから文字列を呼び出す/使用する方法がわからないことです。

+0

は、あなたのクラスのフィールドとして変数を定義します。 –

答えて

0

静的フィールドとして抽出MyName(あなたの現在のコードでMyNameローカル変数で、FstQuestion()でその範囲のを超えている理由です):あなたのプログラムの中で

private static string MyName = ""; 

... 

public static void Introduction{ 
    Console.WriteLine("Welcome"); 

    Console.Write("What's your name ? : "); 

    MyName = Console.ReadLine(); 

    Console.WriteLine("Hey {0},welcome to the quiz! ", MyName); 

    Console.ReadLine(); 
} 

... 

public static void FstQuestion() { 
    //code 

    if (...) { 
    Console.WriteLine(" That's correct,{0} ! ",MyName); 
    } 
    else 
    Console.WriteLine(" Keep trying,{0} ",MyName); 
    ... 
0

は、私が何かをプログラムする前にC#のチュートリアルを読んですることをお勧めいたします「Variable types and scopes

を見てください。これは、これを解決するために多くの方法があります

1

...基本的なものをお届けします。あなたの例のテクニックに基づいて、あなたは手続き的にプログラミングしています。 (これは良いスタートです)

名前を最初のメソッドから戻して、もう一方のメソッドに渡すことができます。

だから我々は簡単に起動します。

public static void Main() 
{ 
    Console.WriteLine("Welcome"); 

    // ask for the name and assign the return value to the local variable `myName` 
    string myName = AskName(); 

    Console.WriteLine("Hey {0},welcome to the quiz! ", myName); 

    // enter the first question, pass the variable `myName` as parameter. 
    FstQuestion(myName); 
} 

public static string AskName() // <- notice the return type `string` instead of `void` 
{ 
    Console.Write("What's your name ? : "); 
    string myName = Console.ReadLine(); 

    // this will return the value of `myName` to the caller. 
    return myName; 
} 

//Quiz introduction 

public static void FstQuestion(string myName) // <-- notice the parameter 
{ 
    //code 

    if(...) 
    { 
    Console.WriteLine(" That's correct,{0} ! ",myName); 
    } 

    else 
     Console.WriteLine(" Keep trying,{0} ",myName); 
} 

次のレッスン:クラスとフィールド

0

あなたの問題は、以下の方法で解決することができる(そのうちのいくつかは、一見皮肉表示される場合があります):

  1. 変数をパラメーターとしてパラメーターに送信しますds(標準で広く使用されている汎用ソリューション)。
  2. すべてのメソッドにアクセスできるように任意の方法の外に宣言されたグローバル変数を、使用してください。
  3. ディスクファイル/システムレジストリ/アプリケーション設定に変数値を保存します。すべての方法でそこから読んでください。
  4. クリップボードに書き込み、クリップボードから読み込みます。
  5. オンラインバックアップサービスを使用してクラウドに格納します。 APIを使用して、すべてのメソッドで値を取得します。
  6. すべての方法でユーザーの名前を確認してください。
0

あなたが持っているでしょう:

public class Program{ 

    public static void main(){ 
     /*...*/ 
    } 
} 

あなたは、あなたのクラスにインスタンス変数を追加したいと思うので、自分のクラスのインスタンスは、あなたがあなたのクラスの内部からアクセスすることができます(または外部からあなたのクラスが、私はそれを待つと思います)が存在する期間:

public class Program{ 

     private static string MyName; 

     public static void main(){ 
      /*...*/ 
      MyName = Console.ReadLine() 
     } 

     public static void FstQuestion(){ 

     //code 

     if(...) 
     { 
      Console.WriteLine(" That's correct,{0} ! ", MyName); 
     } 

     else 
     { 
      Console.WriteLine(" Keep trying,{0} ", MyName); 
     } 
    }