2017-04-10 11 views
-2
public partial class Form1 : Form 
{ 

} 

static class Questions 
{ 
    public static var contents = File.ReadAllLines(@"TextFile/Questions.txt"); 
    public static var newRandom = new Random(); 
    public static var randomLine = newRandom.Next(0, contents.Length - 1); 
    public static var questionToAsk = contents[randomLine]; 
} 

でグローバルに設定された変数を使用しますが、それは私に次のエラーがダイブする方法:方法のC#の

the contexual keyword 'var' ....

変数questionToAskは、テキストファイルからランダムなラインを持って、それが設定されます。しかし、私はSomeOtherメソッドからアクセスしようとします。私はそれを呼び出すことはできません。

どうしたらいいですか?

ありがとうございます。

+1

これらはグローバルに宣言されていません。 –

+0

@OusmaneMahyDiawどういう意味ですか? SomeOtherはクラスですか?基本的にSomeOtherはタイマー経過メソッドであり、私はダニの毎秒新しい質問を設定したくありません。 –

+0

@ IamThe6現在、「SomeOther」メソッドはクラス内にはありません。それは私が意味することです。それにもかかわらず、あなたは "questionToAsk"をグローバルに宣言する必要があります。 –

答えて

1

問題はvarです。フィールドやプロパティの定義には使用できません。暗黙的に型指定されたローカル変数を定義するために使用できます。あなたはこのようなクラス定義を変更する必要があります。

static class Questions 
{ 
    public static string[] contents = System.IO.File.ReadAllLines(@"TextFile/Questions.txt"); 
    public static Random newRandom = new Random(); 
    public static string questionToAsk = String.Empty // Will set it later 
} 

ですから、次のようなクラス名、Questionsを使用してこれらの変数にアクセスすることができます。

public partial class Form1 : Form 
{ 
    int randomLine = Questions.newRandom.Next(0, contents.Length - 1); 
    Questions.questionToAsk = Questions.contents[randomLine]; 
} 

ですから、クラスQuestionsの下に3つの静的変数を持っていますQuestionsを使用すると、アプリケーションの任意の場所にある変数にアクセスできます。 variable_name