mình thì thường thì trước khi dùng object thì check null objectObject reference not set to an instance of an object
if(obj==null)obj=new obj(params[]);
sẽ tránh được lỗi trên
Trong quá trình code của các bạn sẽ ko ít lần gặp trường hợp lỗi như trên.Sau đây mình xin đưa ra các trường hợp gặp lỗi như thế và cách khắc phục nó.
1.Lỗi chưa khởi tạo đối tượng (Lỗi này phổ biến nhất).
Ví dụ các bạn chỉ khai báo như sau.
Sau đó sử dụng biến arr để thêm các đối tượng vào mảng.ArrayList arr;
Cách giải quyết lỗi trên là các bạn phải new(khởi tạo đối tượng)arr.Add("test");//Tại đây chương trình sẽ thông báo lỗi
2.Lỗi về duyệt từng dòng trong DataGridView và lấy ra giá trị của dòng đó.
Các bạn duyệt từng dòng trong DataGridView bằng vòng lặp For như sau sẽ bị lỗi.
Cách giải quyết là trong lúc duyệt thì bạn chỉ được duyệt với số lượng RowCount - 1 mà thôi.
Nếu các bạn duyệt bằng vòng lặp foreach mà gặp lỗi như trên thì các bạn xem lại thuộc tính AlowUserToAddRows sữa nó lại là False.
3.Lấy giá trị trả về từ CSDL bằng phương thức ExecuteScalar.
Với trường hợp này thì bạn hãy kiểm trả câu truy vấn xem có giá trị trả về không?Như ở trên thì với điểu kiện Ma = 1000 thì không có record nào thỏa mãn được.Visual C# Code:
4.Lỗi khi đỗ dữ liệu vào DataSet.
Cách giải quyết vấn đề trên:Visual C# Code:
con.Open(); da.Fill(ds,"table"); DataTable table = ds.Tables["test"];//Tại đây biến table có giá trị là null vì ko thấy Table nào có tên là "test". //Và chương trình sẽ báo lỗi khi bạn dùng biến table để làm việc gì đó.
- Kiểm tra câu truy vấn có record nào trả về hay không?
- Nếu các bạn dùng DataSet thì lúc Fill và DataSet nếu có đặt tên cho Table thì phải nhớ.Nếu không nhớ nữa thì gán vào DataTable như sau:
Visual C# Code:
DataTable table = ds.Tables[0];
5.Khi bạn tương tác với Registry.
Và các bạn muốn lấy (Get) hoặc gán (Set) giá trị nào đó cho 1 key trong Registry:
Nếu gặp lỗi như trên thì bạn hãy kiểm tra lại đường dẫn đến khóa đó xem có đúng không.Hoặc xem lại cái key của bạn muốn lấy giá trị xem có tồn tại không.
6.Nếu 1 đối tượng đang là NULL mà dùng phương thức ToString() để lấy giá trị của nó thì sẽ gặp lỗi như trên.
P/s:Trên là những trường hợp theo quản điểm chủ quan của mình có sai sót chỗ nào mong các bạn thông cảm.Có thể còn nhiều trường hợp khác nữa mong các bạn góp ý thêm
Lý do mình lập Topic này ở đây là vì đây là box thắc mắc các vấn đề các bạn gặp phải khi lập trình nên các bạn thường xuyên vào đây. Do đó khi có bạn nào gặp phải vấn đề như trên thì khỏi phải lập đề tài mới
Đã được chỉnh sửa lần cuối bởi huuhung : 03-10-2011 lúc 10:08 PM. Lý do: Bổ sung lý do lập topic
mình thì thường thì trước khi dùng object thì check null objectObject reference not set to an instance of an object
if(obj==null)obj=new obj(params[]);
sẽ tránh được lỗi trên
cứ theo hướng dẫn lỗi mà khắc phục thoai. Nó báo không có đối tượng thì mình tạo đối tượng cho nó là oke.
Skype: mrfour.it - Yahoo:mrfour_it
Gmail: mrfour.it@gmail.com
Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!
==> không thấy đưa ra giải pháp khắc phục6.Nếu 1 đối tượng đang là NULL mà dùng phương thức ToString() để lấy giá trị của nó thì sẽ gặp lỗi như trên.
Làm như vậy tốt nhất chưa?
string x= (str==null?"":str.ToString());
Đã được chỉnh sửa lần cuối bởi HuyenTran2011 : 27-10-2011 lúc 10:17 AM.
Do bạn declare(variable) ra 1 biến có thể là array, int, string, datable, hashtable in c#
mà những biến này mình chưa new nó thì default sẽ là null
nên cách tốt nhất là khi mình khai báo một kiểu dữ liệu nào đó thì bạn nên
1. gán default cho biến đó
ex: string strPass = String.Empty() or string strPass = ""
int intNo = 0
Datatable dtTemp = null nếu là datatable thì nên gán bằng null lý dó là nếu bạn chưa sử dụng thì đừng bao gời new Datatable() nhé tốn bộ nhớ
2. nếu bạn muốn gán dữ liệu cho nó thì kiểm tra trước khi gắn thì ko bao gời bị lỗi
3. để tránh những lỗi như thế này thì cũng ko khó và ko dễ chủ yếu là do mình viết từng đoạn code mà thôi, cái này phụ thuộc vào kinh nghiệm của mỗi người.
Một vài ý, hy vọng giúp dc.
Yahu': newmoon_04h
Mình cũng đang bị cái lỗi thứ 6.
Chẳng là cái Combombox của mình chưa được Selected Index mà mình đã gọi hàm
Combobox.SelectedItem.ToString();
( Vấn đề ở đây là mình không muốn Selected Index trước cái combobox của mình, vì khi mình Selected Index thì nó lại gọi sự kiện click của Combobox)
Bạn nào giúp mình vấn đề này với!
Bạn có thể gán thuộc tính SelectIndex = 0 của Combobox.
Uhm,
Bạn có thể giúp mình xem câu lệnh này của mình sai ở chỗ nào nhé:
objCommand.CommandText = "Select * From [" + Nb_TenBang + "] Where [Story=? and Column=? and Loc=?]";
vừa mày mò sửa được luôn rồi :
objCommand.CommandText = "Select * From [" + Nb_TenBang + "] Where (Story=? and Column=? and Loc=?)";
Mình tưởng cái này visual sẽ đưa ra cảnh báo là sử dụng 1 đối tượng chưa được tạo thể hiện nhỉ? Lúc F5 ý! Sau đó thì mình sẽ edit nó rồi run success. Thực ra nếu nắm bắt kỹ thì biết được cái mình khai báo là Data Type hay Ref Tye sẽ tránh được lỗi này, đặc biệt khi sử dụng nó thì cần phải kiểm tra nó có null hay không là ổn.
Hỏi một câu thì chỉ dốt trong chốc lát.Nhưng nếu không hỏi thì bạn sẽ dốt suốt đời.