2016-03-22 13 views
0

'da "Örnekleri Statik Sınıfta Bildiremez" ile ilgili bir hata iletisi atılıyor C# 'da bir konsol Kuadratik Hesap Makinesi oluşturmaya çalışıyorum. Ancak hatalar "Statik olmayan üyelere erişmek için bir nesne başvurusu gerekli" "A" "B" ve "C" değişkeni olan satırlarda; Ben MainClass Sınıf statik eklemek Ancak , Xamarin StudioTamarin Studio

o kadar baktıktan sonra bana

Ben bu sorunu çözmeye çalışırken vazgeçmek noktasına duyuyorum "statik bir sınıfta örnek üyeleri beyan edemez" veriyor

Kodun nerede değiştirileceğini ve neden işe yaramadığını söylerseniz gerçekten memnun oluruz;

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

ve bu statik yönteminde Eğer statik olmayan üye ulaşmaya çalışıyorsunuz:

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()); 
    } 
} 

} Bu hatanın

cevap

2

nedeni, Main yöntem static olduğu:

double A, B, C; 

Statik olmayan örnek üyelere yalnızca sınıfınızın bir örneği üzerinden erişilebildiğinden bu olanaksızdır.
Yani acil çözüm de o tür üyeler static beyan etmektir:

class MainClass 
{ 
    static double A, B, C; 
    ... 
}