Header Ads

Cách ép kiểu(convert) dữ liệu trong C#


Sau đây cho thấy các chuyển đổi ngầm mà "cô nàng" C# chịu hỗ trợ:
TỪ kiểu dữ liệu này... Qua kiểu dữ liệu....
sbyte --> short,int,long,float,double,decimal
byte --> short,ushort,int,uint,long,ulong,float,double,deci mal
short ->int,long,float,double,decimal
ushort-->int,uint,long,ulong,float,double,decimal
int-->long,float,double,decimal
uint-->long,ulong,float,double,decimal
long,ulong-->float,double,decimal
float-->double
char-->ushort,int,uint,long,ulong,float,double,decimal

2.Chuyển đổi tường minh
Tuy nhiên, vẫn có những chuyển đổi ngầm không thể thực hiện được và trình biên dịch sẽ thông báo sai lầm nếu bạn cố tình vi phạm. Sau đây là 1 số chuyển đổi ngầm không thực hiện được:
int --> short
int -->uint
uint-->int
float-->int : sẽ mất dữ liệu sau dấu thập phân
decimal --> qua bất cứ kiểu dữ liệu số
Tuy nhiên, ta có thể chuyển đổi bằng cách ép kiểu. Khi ta ép 1 kiểu dữ liệu này qua kiểu dữ liệu khác, ta cố tình ép compiler phải tuân theo. Cú pháp như sau:

Code:
short x;
int y=555;
x= (short) y; // OK, nhưng số tối đa là 32 767
Việc chuyển đổi tường mình, sử dụng ép kiểu có thể là nguy hiểm nếu bạn không biết bạn đang làm gì. Ví dụ, nếu từ long-->int có thể gây nguy hiểm nếu trị ban đầu của long lớn hơn trị tối đa của int. Ví dụ:
Code:
long val=1000000000000000;
int i = (int) val; // Sai be bét vì int có trị tối đa là
2147483647
Trong trường hợp này, bạn sẽ nhận: -1294967296, không phải là số mà bạn mong muốn.

 1.ToString()
Đây có lẽ là phương thức đáng yêu nhất đối với tớ, vì nó giúp chuyển đổi mọi thứ thành chuỗi. Vì C# coi mọi thứ như các đối tượng, và trong các đối tượng đều có các phương thức của riêng nó, nhưng dù là đối tượng nào đi chăng nữa, đều có phương thức ToString(). Có điều mọi người nên biết là trong C#, có 1 lớp trùm (gọi là đại ca của mọi đại ca các lớp), lớp này có tên là Object, tất cả mọi class trong C# đều kế thừa từ lớp Object này. Cụ thể ở đây là thừa kế phương thức ToString().
Cách sử dụng: đơn giản như đang giỡn

Code:
int x = 5321;
string s = x.ToString();
Kết quả là ta có chuỗi "5321". Đơn giản quá phải không? Không cần phải bàn thêm về ToString() nữa
2.Convert
Ặc, không dám bàn luận, lớp này cũng hơi to, cụ thể là nó giúp chúng ta chuyển đổi qua lại giữa các kiểu dữ liệu: Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal, DateTime và String.
Tớ chỉ dám cho vài ví dụ để minh họa:
Code:
double db_value = 23.15;
int int_value = Convert.ToInt32(db_value); // return value:23
bool bNumber = Convert.ToBoolean(db_value); // return value:true
string sValue = Convert.ToString(db_value); //return value: "23.15"
Cậu nên tham khảo MSDN để biết thêm chi tiết.

Tôi thì khoái dùng cái kiểu sau để Convert sang string,Nhưng ko biết nó là ngầm định hay tường minh nhỉ :-?? :
int x=5;
string s=""+x;


No comments