Προς το περιεχόμενο
  • 0
Συνδεθείτε  
acid18

απορία σε C#

Ερώτηση

Αν έχουμε μια κλάση πχ

 

class test

         {

                 public string name;

                 

                  public test(string name_)

                                  {

                                        this.name = name_;

                                   }

            }

 

 

και έχουμε κάποιο αντικείμενο temp

 

αυτό εδώ temp.name = "kapia timi" δημιουργεί  null reference exception

γιατί γίνεται αυτό?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

9 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

  • 0

ναι το ξέρω αυτό εννοείται, έχει καμιά σημασία που η ανάθεση γίνεται σε while loop?

αυτός είναι ο κώδικας

 

student temp = new student();
           List<student> students = new List<student>();
           string sql = "select * from student";
           SqlCeConnection con = new SqlCeConnection(@"DataSource=MyDatabase#1.sdf");
           con.Open();
           SqlCeCommand cmd = new SqlCeCommand(sql, con);
           SqlCeDataReader reader = cmd.ExecuteReader();
           int i = 0;
           while (reader.Read())
           {

               
              // ΑΥΤΟ ΛΕΙΤΟΥΡΓΕΙ student temp = new student(reader["fname"].ToString(), reader["lname"].ToString(), reader["bdate"].ToString());
               temp.fname = reader["fname"].ToString();
               //temp.lname = reader["lname"].ToString();
              // temp.bdate = reader["bdate"].ToString();
               students.Add(temp);
               temp = null;

               i++;
           }
         // MessageBox.Show(students.ElementAt(0).fname);
         // MessageBox.Show(students.ElementAt(0).lname);
           con.Close();
           return students;
       }
    }
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Βγάλε temp=null απο το loop. Μετά το πρώτο loop είναι πλέον null. 

Επίσης πρέπει να δημιουργείς νέο temp κάθε φορά στη while, αλλιώς όλα τα στοιχεία της λίστας έχουν (αναφορά στο) το ίδιο αντικείμενο. Αυτό που προστέθηκε τελευταίο.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

1) Δες properties

2) Εφοσον εχεις constructor που παιρνει τα στοιχεια τοτε μπορεις απλα να κανεις students.Add(new Student("name", etc))

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

1) Δες properties

2) Εφοσον εχεις constructor που παιρνει τα στοιχεια τοτε μπορεις απλα να κανεις students.Add(new Student("name", etc))

στο 2  εννοείς να το κάνω έτσι students.Add(new student(reader["fname"].ToString(), reader["lname"].ToString(), reader["bdate"].ToString())?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Πριν το είχα κάνει με αυτόν τρόπο επειδή δεν λειτουργούσε ο τρόπος που έχω τώρα.

Η αλήθεια είναι ότι τώρα διαβάζω για την c# (γενικά .net) και προσπαθώ να κάνω διάφορα και linq δεν είδα ακόμα..

Το βιβλίο είναι Visual C# 2008 Βήμα βήμα.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Χαλαρα, ειναι ευκολη γλωσσα και κυριως διασκεδαστικη. Καλη συνεχεια

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε έναν λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι εύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
Συνδεθείτε  
×
×
  • Δημιουργία νέου...

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.