
Nguyên bản được gửi bởi
pete_87
Hihih...
Lấy phong độ trở lại

Đầu tư cho tương lai.
+ Tự nhiên thấy cái này cũng quan trọng không kém trong khi lập trình.
Các kiểu dữ liệu chính trong C# <ý là hay dùng> : char _ short _ integer _ double _ string _ bool
...Em có câu hỏi : các anh cho em biết cách convert chuyển đổi giữa các kiểu nhé ^^!
Trong C# có 2 kiểu chuyển đổi:
1.Chuyển đổi ngầm định
Code:
short x=5;
int y=x; // chuyển đổi ngầm
Câu lệnh ở trên tương đương:
Code:
short x=5;
int y = (int) x;
Tuy nhiên, nếu bạn chuyển đổi theo chiều ngược lại, chắc chắn là bạn sẽ mất thông tin. Nếu trị biến kiểu int lớn hơn 32 767, nó sẽ bị xén đi. Compiler sẽ không thi hành một chuyển đổi ngầm định từ int qua short. Có thể hiểu đơn giản là không thể lấy "ngắn chứa dài" (int > short)
Code:
short x;
int y=500;
x = y ; // không chịu biên dịch
Bạn phải cho ép kiểu một cách rõ ràng ra, nếu bạn chắc cú là không mất thông tin
[code
short x;
int y = 500;
x = (short)y // OK, bây giờ chịu biên dịch rồi đấy!
[/code]
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.