Ссылка на объект требуется для нестатического поля, метода или свойства - PullRequest
0 голосов
/ 28 апреля 2010
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Drawing;
using System.Data.OleDb;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Collections.Generic;

namespace Eagle_Eye_Class_Finder
{

    public class GetSchedule
    {
        public GetSchedule()
        {
            IDnumber[] IDnumbers = new IDnumber[3];
            IDnumbers[0] = new IDnumber() { Name = "Joshua Banks", ID = "900456317", year = "Senior", class1 = "TEET 4090", class2 = "TEET 3020", class3 = "TEET 3090", class4 = "TEET 4290" };
            IDnumbers[1] = new IDnumber() { Name = "Sean Ward", ID = "900456318", year = "Junior", class1 = "ENGNR 4090", class2 = "ENGNR 3020", class3 = "ENGNR 3090", class4 = "ENGNR 4290" };
            IDnumbers[2] = new IDnumber() { Name = "Terrell Johnson", ID = "900456319", year = "Sophomore", class1 = "BUS 4090", class2 = "BUS 3020", class3 = "BUS 3090", class4 = "BUS 4290" };

        }
        public class IDnumber
        {
            public string Name { get; set; }
            public string ID { get; set; }
            public string year { get; set; }
            public string class1 { get; set; }
            public string class2 { get; set; }
            public string class3 { get; set; }
            public string class4 { get; set; }


           public static void ProcessNumber(IDnumber myNum)
                {
                    StringBuilder myData = new StringBuilder();
                    myData.AppendLine(IDnumber.Name);   
                    myData.AppendLine(": ");   
                    myData.AppendLine(IDnumber.ID);   
                    myData.AppendLine(IDnumber.year);   
                    myData.AppendLine(IDnumber.class1);   
                    myData.AppendLine(IDnumber.class2);   
                    myData.AppendLine(IDnumber.class3);   
                    myData.AppendLine(IDnumber.class4);  
                    MessageBox.Show(myData);
                }

            public string GetDataFromNumber(string ID)
            {

               foreach (IDnumber idCandidateMatch in IDnumbers)  

            { 

            if (IDCandidateMatch.ID == ID)
                {
                     StringBuilder myData = new StringBuilder();
                     myData.AppendLine(IDnumber.Name);   
                     myData.AppendLine(": ");   
                     myData.AppendLine(IDnumber.ID);   
                     myData.AppendLine(IDnumber.year);   
                     myData.AppendLine(IDnumber.class1);   
                     myData.AppendLine(IDnumber.class2);   
                     myData.AppendLine(IDnumber.class3);   
                     myData.AppendLine(IDnumber.class4);  
                     return myData;
        }
    }
    return "";
}
        }

    }
}using System;
using System.IO;
using System.Data;
using System.Text;
using System.Drawing;
using System.Data.OleDb;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Collections.Generic;

namespace Eagle_Eye_Class_Finder
{

    public class GetSchedule
    {
        public GetSchedule()
        {
            IDnumber[] IDnumbers = new IDnumber[3];
            IDnumbers[0] = new IDnumber() { Name = "Joshua Banks", ID = "900456317", year = "Senior", class1 = "TEET 4090", class2 = "TEET 3020", class3 = "TEET 3090", class4 = "TEET 4290" };
            IDnumbers[1] = new IDnumber() { Name = "Sean Ward", ID = "900456318", year = "Junior", class1 = "ENGNR 4090", class2 = "ENGNR 3020", class3 = "ENGNR 3090", class4 = "ENGNR 4290" };
            IDnumbers[2] = new IDnumber() { Name = "Terrell Johnson", ID = "900456319", year = "Sophomore", class1 = "BUS 4090", class2 = "BUS 3020", class3 = "BUS 3090", class4 = "BUS 4290" };

        }
        public class IDnumber
        {
            public string Name { get; set; }
            public string ID { get; set; }
            public string year { get; set; }
            public string class1 { get; set; }
            public string class2 { get; set; }
            public string class3 { get; set; }
            public string class4 { get; set; }


           public static void ProcessNumber(IDnumber myNum)
                {
                    StringBuilder myData = new StringBuilder();
                    myData.AppendLine(IDnumber.Name);   
                    myData.AppendLine(": ");   
                    myData.AppendLine(IDnumber.ID);   
                    myData.AppendLine(IDnumber.year);   
                    myData.AppendLine(IDnumber.class1);// i get it for all of these   
                    myData.AppendLine(IDnumber.class2);   
                    myData.AppendLine(IDnumber.class3);   
                    myData.AppendLine(IDnumber.class4);  
                    MessageBox.Show(myData);
                }

            public string GetDataFromNumber(string ID)
            {

               foreach (IDnumber idCandidateMatch in IDnumbers)  

            { 

            if (IDCandidateMatch.ID == ID)
                {
                     StringBuilder myData = new StringBuilder();
                     myData.AppendLine(IDnumber.Name);   
                     myData.AppendLine(": ");   
                     myData.AppendLine(IDnumber.ID);   
                     myData.AppendLine(IDnumber.year);   
                     myData.AppendLine(IDnumber.class1);   
                     myData.AppendLine(IDnumber.class2);   
                     myData.AppendLine(IDnumber.class3);   
                     myData.AppendLine(IDnumber.class4);  
                     return myData;
        }
    }
    return "";
}
        }

    }
}

Ответы [ 4 ]

0 голосов
/ 28 апреля 2010

Одним из решений является сделать это:

        foreach (IDnumber idCandidateMatch in IDnumbers)  

        { 

        if (idCandidateMatch.ID == ID)
            {
                 StringBuilder myData = new StringBuilder();
                 myData.AppendLine(idCandidateMatch.Name);   
                 myData.AppendLine(": ");   
                 myData.AppendLine(idCandidateMatch.ID);   
                 myData.AppendLine(idCandidateMatch.year);   
                 myData.AppendLine(idCandidateMatch.class1);   
                 myData.AppendLine(idCandidateMatch.class2);   
                 myData.AppendLine(idCandidateMatch.class3);   
                 myData.AppendLine(idCandidateMatch.class4);  
                 return myData;
    }

вместо:

       foreach (IDnumber idCandidateMatch in IDnumbers)  

        { 

        if (IDCandidateMatch.ID == ID)
            {
                 StringBuilder myData = new StringBuilder();
                 myData.AppendLine(IDnumber.Name);   
                 myData.AppendLine(": ");   
                 myData.AppendLine(IDnumber.ID);   
                 myData.AppendLine(IDnumber.year);   
                 myData.AppendLine(IDnumber.class1);   
                 myData.AppendLine(IDnumber.class2);   
                 myData.AppendLine(IDnumber.class3);   
                 myData.AppendLine(IDnumber.class4);  
                 return myData;
    }
}
return "";

Поскольку имя (и другие свойства) не являются статичными.

Проблема в следующих строках:

IDNumber. [Свойство]

как например

IDnumber.ID

или

IDnumber.Name

потому что ID, Имя ... и другие не являются статичными. Решением является замена имени класса переменной вашего экземпляра во всех соответствующих строках:

как

idCandidateMatch.ID

idCandidateMatch.Name

... (см. код выше)

Обратите внимание, что здесь вы используете другой регистр для имени переменной:

        foreach (IDnumber *idCandidateMatch* in IDnumbers)  

и здесь:

        if (*IDCandidateMatch*.ID == ID)

C # чувствителен к регистру, и это не должно работать (если я не пропустил что-то в вашем исходном коде:)

0 голосов
/ 28 апреля 2010

Ну, кода много, но вот пример

public class IDnumber 
    { 
        public string Name { get; set; } 
        public string ID { get; set; } 
        public string year { get; set; } 
        public string class1 { get; set; } 
        public string class2 { get; set; } 
        public string class3 { get; set; } 
        public string class4 { get; set; } 


       public static void ProcessNumber(IDnumber myNum) 
            { 
                StringBuilder myData = new StringBuilder(); 
                myData.AppendLine(IDnumber.Name);    
                myData.AppendLine(": ");    
                myData.AppendLine(IDnumber.ID);    
                myData.AppendLine(IDnumber.year);    
                myData.AppendLine(IDnumber.class1);// i get it for all of these    
                myData.AppendLine(IDnumber.class2);    
                myData.AppendLine(IDnumber.class3);    
                myData.AppendLine(IDnumber.class4);   
                MessageBox.Show(myData); 
            } 

Ваш метод является статическим, но класс, содержащий члены, на которые вы ссылаетесь, не является таковым, он не работает таким образом, поскольку этот метод никогда не будет принадлежать определенному экземпляру.

0 голосов
/ 28 апреля 2010
 public static void ProcessNumber(IDnumber myNum)
 {
                    StringBuilder myData = new StringBuilder();
                    myData.AppendLine(myNum.Name);   
                    myData.AppendLine(": ");   
                    myData.AppendLine(myNum.ID);   
                    myData.AppendLine(myNum.year);   
                    myData.AppendLine(myNum.class1);   
                    myData.AppendLine(myNum.class2);   
                    myData.AppendLine(myNum.class3);   
                    myData.AppendLine(myNum.class4);  
                    MessageBox.Show(myData);
 }
0 голосов
/ 28 апреля 2010

Статический метод не должен ссылаться на себя, он должен ссылаться на IDnumber, который вы передаете ему, вот так:

public static void ProcessNumber(IDnumber myNum)
{
    StringBuilder myData = new StringBuilder();
    myData.AppendLine(myNum.Name);
    myData.AppendLine(": ");
    myData.AppendLine(myNum.ID);
    myData.AppendLine(myNum.year);
    myData.AppendLine(myNum.class1);// i get it for all of these   
    myData.AppendLine(myNum.class2);
    myData.AppendLine(myNum.class3);
    myData.AppendLine(myNum.class4);
    MessageBox.Show(myData.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...