c# - Object reference not set to an instance error -


i can't figure out why keeps happening. i'm beginner me there reference set instance. had trouble @ first getting class have size array set 100

here code.

form1.cs

using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.threading.tasks; using system.windows.forms;  namespace windowsformsapplication1 { public partial class form1 : form {      salesmanclass[] salesmen = new salesmanclass[100];       public form1()     {         initializecomponent();     }      private void button1_click(object sender, eventargs e)     {          if (textbox6.text.trim().length != 0)         {               (int = 0; <= salesmen.length; i++)             {                  if (salesmen[i] == null)                 {                     salesmen[i].name = textbox6.text; // error happens here when enter form says                     //object reference not set instance of object error                     break;                  }              }          }         else         {             messagebox.show("please input name");         }      }      private void listbox1_selectedindexchanged(object sender, eventargs e)     {      }      private void button2_click(object sender, eventargs e)     {         list<string> names = new list<string>();          (int = 0; < salesmen.length; i++)//var salesmen in salesmen)         {             names.add(salesmen[i].name);// same problem here         }         listbox1.items.add(names);      }      private void textbox6_textchanged(object sender, eventargs e)     {      }      private void button2_click_1(object sender, eventargs e)     {      } } } 

salesmanclass.cs

using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks;  namespace windowsformsapplication1 { public class salesmanclass {      public string name;     public string cnum;     public string email;     public string address;     public string garea;     public int tsales;      public salesmanclass()     {         name = null;         cnum = null;         email = null;         address = null;         garea = null;       } 

just remember line doesn't create new salesmanclass objects, 100 references of type salesmanclass.

salesmanclass[] salesmen = new salesmanclass[100]; 

i think want:

if (salesmen[i] == null) {     salesmen[i] = new salesmanclass();     salesmen[i].name = textbox6.text;     break; } 

[edit] lander beat me it. suggest use list, don't have worry "empty spots"

list<salesman>() salesmen = new list<salesman>(); 

and replace for loop code simply:

if (textbox6.text.trim().length != 0) {     salesmen.add(new salesmane() { name = textbox6.text } ); } else {     messagebox.show("please input name"); } 

you use further down in list<string> names.

you might have declare getters , setters on properties:

public string name { get; set; } 

i make these property names camelcase since accepted standard.

you'll need update button2_click use count instead of length or use foreach loop:

foreach (salesman salesman in salesmen) { names.add(salesman.name); } 

you can use linq simplify, same ting:

list<string> names = salesmen.select(s => s.name).tolist(); 

Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -