|
|
|
C# มีข้อสงสัยเกี่ยวกับเรื่องของ null ครับ null แล้ว แปลงเป็นอย่างอื่นเช่น string int หรือ type อื่น ได้ไม๊ |
|
|
|
|
|
|
|
ผมหัดเขียนโปรแกรมมา 2 ปี กินไม่ค่อยลงซักทีกับเรื่องของ null
1. null,bdnull ใช้กับ type ประเภทไหนได้บ้างครับ
2. เราจะรู้ได้ยังไงว่าค่าของเราเป็น null อย่าง string datetime conn object
3. การทำให้ตัวแปรเราเป็น null
4. null แล้ว แปลงเป็นอย่างอื่นเช่น string int ได้ไม๊
อย่างบางที ผมใช้
Code (C#)
if( iNVDataGridView[2, e.RowIndex].Value== null)
กลับ Error null ซะงั้น
หรือบางทีเราไม่ได้เช็ค null ก่อน
Code (C#)
string str = iNVDataGridView[2, e.RowIndex].Value.ToString();
this.paymentTableAdapter.FillBy_(this.aCCDataSet.Payment,
sheet.Cells[i, 2].Value.ToString().Trim(),
sheet.Cells[i, 8].Value.ToString().Trim(),
sheet.Cells[i, 9].Value.ToString().Trim());
Error null เช่นกัน
ขนาดเช็คยังมีเจอ
Code (C#)
if( iNVDataGridView[2, e.RowIndex].Value== null)
ก็เคยเจอ Error แต่จำไม่ได้แล้วครับ
Tag : .NET, C#, VS 2012 (.NET 4.x), Windows
|
|
|
|
|
|
Date :
2016-05-26 10:49:26 |
By :
lamaka.tor |
View :
3329 |
Reply :
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (JavaScript)
if( e != null){
if( iNVDataGridView[2, e.RowIndex].Value!= null ){
your_code;
ทุกตัวแปรเป็น null ได้ทั้งหมดครับ ถ้าไม่ได้กำหนดค่า
Code (C#)
string a;
int b;
List<string> z;
ทุกตัวแปรข้างบน เป็น null ทั้งหมดครับ เพราะไม่ได้ กำหนดค่าให้ แค่กำหนด type เฉยๆ
|
|
|
|
|
Date :
2016-05-26 11:04:54 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รู้สึกว่า
Code (C#)
iNVDataGridView[2, e.RowIndex].Value!= null
iNVDataGridView[2, e.RowIndex].Value!= DBnull
ผมเคยใช้แล้ว error ครับ แต่ไม่มั่นใจว่าเกี่ยวกับ ที่ผม bind data ด้วยรึป่าวนะครับ
ยังไงถ้าผมเจออีกจะเอามาโพสให้ครับ
ผมเลยเปลี่ยนมาใช้
Code (C#)
iNVDataGridView[2, e.RowIndex].Value.ToString.Length >0
แทน
เหมือนทั้งสองแบบจะใช้ได้บ้างไม่ได้บ้าง ครับเลยไม่กล้าฟันธงว่าใช้ตัวไหนถึงจะถูก
|
|
|
|
|
Date :
2016-05-26 11:28:01 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. null,bdnulldbnull ใช้กับ type ประเภทไหนได้บ้างครับ
- null != dbnull และ null != string.empty หรือ ""
null คือ ว่างเปล่า เช่น ตัวแปรที่ไม่ได้ assign ค่า
dbnull คือ class ใช้สำหรับแทนค่า null ใน database
ซึ่งต่างกับ null ตรงที่ตัวมันเป็น object เนี่ยแหละ
จากที่เคยใช้ เวลาใช้ก็ประมาณนี้
Code (C#)
// ส่ง data ไป insert ลง db
DrNew["InstallDate"] = (d.InstallDate != DateTime.MinValue) ? (object)d.InstallDate : DBNull.Value;
// รับ data จาก db
aDetail.InstallDate = (data["InstallDate"] != DBNull.Value) ? (Nullable<DateTime>)data["InstallDate"] : null;
2. เราจะรู้ได้ยังไงว่าค่าของเราเป็น null อย่าง string datetime conn object
- if เลย x == null เดี๋ยวก็รู้
3. การทำให้ตัวแปรเราเป็น null
- x = null
4. null แล้ว แปลงเป็นอย่างอื่นเช่น string int ได้ไม๊
- แล้วแต่ type ของตัวแปล เช่น int? x = null; x = 1; x.tostring();
|
|
|
|
|
Date :
2016-05-26 11:32:55 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นแนวทางให้ศึกษาได้ดีเลยครับ
|
|
|
|
|
Date :
2016-05-26 11:41:58 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มาเล่ารูปแบบการแก้ปัญหาแบบบ้านๆ
ผมจะเอา 2 คอลัมนี่รวมกันครับ
แต่ติดตรงที่เป็นค่า null
Error มาก่อนเลย
แก้แล้วยังตามมาติด ๆ
สุดท้ายก็ทำได้
Code (C#)
if ((rTDataGridView[5, e.RowIndex].Value != null || rTDataGridView[5, e.RowIndex].Value.ToString().Length > 0) && (rTDataGridView[8, e.RowIndex].Value != null || rTDataGridView[8, e.RowIndex].Value.ToString().Length > 0))
{
rTDataGridView[9, e.RowIndex].Value = double.Parse(0 + rTDataGridView[5, e.RowIndex].Value.ToString()) - double.Parse(0 + rTDataGridView[8, e.RowIndex].Value.ToString());
}
|
|
|
|
|
Date :
2016-05-26 14:43:42 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เรื่องเปลี่ยนตัวเลข นี่ผมตัดปัญหาเขียน Extension มาใช้เลยครับ ง่ายดี
Code (C#)
public static class clsExtension
{
public static double ToDouble(this object value)
{
double d;
try{d = Convert.ToDouble(value);}catch{d=0;}
return d;
}
}
Code (C#)
rTDataGridView[9, i].Value.ToDouble()
เผื่อใครอยากเอาไปแก้ไขบ้างครับ
|
|
|
|
|
Date :
2016-05-26 17:13:20 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
if( iNVDataGridView[2, e.RowIndex].Value== null)
ที่ Error อาจจะเป็นเพราะ case ประมานนี้ครับ
iNVDataGridView = null
e = null
iNVDataGridView[2, e.RowIndex] = null
---------------
ส่วนที่จะ convert เป็น double มีให้ใช้ประมานนี้ครับ
Code (C#)
string strDouble = "30";
double value = 0;
double.TryParse(strDouble, out value);
//ซึ่ง code ข้างในอาจจะเขียนเหมือนที่คุณเขียนก็ได้ แต่มีให้ใช้เลย*-*
//double.TryParse return เป็น bool สามารถเอาไปตรวจสอบว่าสามารถ convert ได้หรือเปล่าครับ
|
ประวัติการแก้ไข 2016-05-27 17:36:50
|
|
|
|
Date :
2016-05-27 17:35:27 |
By :
birdbird27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันติดตั้งแต่ ToString() แล้วครับ เรื่อง convert ไม่มีปัญหาครับ
ผมเองก็ใช้คำไม่ถูกเพราะไม่เคยเรียนมาแบบจริงๆจังๆ
แต่ที่รู้ๆมันเป็น ค่าว่าง ครับ
|
|
|
|
|
Date :
2016-05-28 10:18:54 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DataGridView1[0,0] ยังไม่ได้กำหนดค่าครับ ก็จะเป็น null
เอามาใส่ .value ก็ error แล้วครับ ยังไม่ต้องไปถึง parse ต้องตรวจสอบก่อน
Code (C#)
if( !DataGridview[0,0].Equals(null)){
..........
|
|
|
|
|
Date :
2016-05-28 12:57:03 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Equals(null) ก็ยังดื้ออยู่ครับ
|
|
|
|
|
Date :
2016-05-28 14:44:34 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double.TryParse( Convert.Tostring(),.....)
|
|
|
|
|
Date :
2016-05-30 13:19:53 |
By :
.... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|