2016-03-22 1 views
0

C#でコンソールの二次電卓を作成しようとしています。 変数 "A" "B"と "C"の行の "非静的メンバーにアクセスするにはオブジェクト参照が必要です"というエラー ;私はMainClassクラスに静的に追加しかし 、 Xamarin StudioはTamarin Studioの「スタティッククラスのインスタンスメンバーを宣言できません」というエラーメッセージが表示される

をそれを見た後、私は

私はこの問題を解決しようとする上であきらめのポイントにしています「静的クラスのインスタンスのメンバを宣言することはできません」与えています

コードをどこで変更すればいいのか、なぜこれがうまくいかないのか教えていただければ幸いです。

public static void Main (string[] args) 
{ 
    ... 
} 

とその静的方法であなたは非静的メンバーにアクセスしようとしています

using System; 

namespace CsharpConceptsCrashCourse 
{ 
class MainClass 
{ 
    double A, B, C; 
    public static void Main (string[] args) 
    { 
     Begin(); 
     Console.WriteLine("Root 1 : {0}, Root 2: {1}", 
     QRoot(A,B,C,"NEG"),QRoot(A,B,C,"POS")); 

    Console.ReadKey(); 

    } 

    public static double QRoot(double a,double b,double c, string VL){ 
     double top = Math.Pow (b, 2) - (4 * a * c); 

     if (VL == "POS") { 

      double topf = (-1 * (b)) + Math.Sqrt (top); 
      return (topf/(2 * a)); 

     } else{ 

      double topf = (-1 * (b)) - Math.Sqrt (top); 
      return (topf/(2 * a)); 

     } 
    } 
    public static void Begin(){ 

     Console.WriteLine ("Welcome to the quadratic calculator:"); 
     Console.WriteLine ("Enter your three values for \na , b, and c \nfrom the standard format"); 
     Console.WriteLine ("A:"); 
     A = Convert.ToDouble (Console.ReadLine()); 
     Console.WriteLine ("B:"); 
     B = Convert.ToDouble (Console.ReadLine()); 
     Console.WriteLine ("C:"); 
     C = Convert.ToDouble (Console.ReadLine()); 
    } 
} 

}このエラーの

答えて

2

理由は、あなたのMain方法がstaticです。

double A, B, C; 

これは不可能です。これは、静的でないインスタンスメンバーにはクラスのインスタンスからしかアクセスできないためです。
すぐれた解決策は、これらのメンバーをstaticと宣言することです。

class MainClass 
{ 
    static double A, B, C; 
    ... 
} 
関連する問題