Toán học trong C# (phần 16)

Làm việc với các dạng và casting khác nhau trong C# (tiếp tục)

Tuy nhiên, các chuyển đổi casting không được định nghĩa giữa mọi dạng có thể. Ví dụ, bạn không thể làm cái
này:

string text = “0”;
int number = (int)text; // DOES NOT WORK!

Không có chuyển đổi được định nghĩa (công khai hay ngầm định) cái đi từ string thành int. Chúng ta có thể luôn
quay trở lại trên Convert và thực hiện int number = Convert.ToInt32(text);.
Các chuyển đổi và casting giải quyết hai vấn đề chúng ta chú ý trước đây: các hoạt động toán học không được định
nghĩa cho các dạng nhỏ, và pha trộn các dạng gây ra các vấn đề.
Xem xét code này:

short a = 2;
short b = 3;
int total = a + b; // a and b are converted to ints automatically.

Phép cộng không được định nghĩa cho dạng short, nhưng nó tồn tại cho dạng int. Máy tính sẽ ngầm định chuyển đổi cả
thành một int và sử dụng int’s + hoạt động. Cái này sinh ra một kết quả cái là một int, không phải là một short, nên
nếu chúng ta muốn quay trở lại thành một short, chúng ta cần cast nó:

short a = 2;
short b = 3;
short total = (short)(a + b);

Dòng cuối cùng dấy lên một điểm quan trọng: toán tử casting có ưu tiên cao hơn hầu hết các toán tử khác. Để để phép cộng
xảy ra trước và casting thứ hai, chúng ta phải đặt phép cộng trong dấu ( ) để buộc nó xảy ra trước tiên. (Chúng ta cũng có
thể chia tách phép cộng và chuyển đổi casting thành 2 dòng riêng rẽ.)

Chia sẻ