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
Post a Comment