CodeGym /Các khóa học /C# SELF /Chuyển đổi giữa các kiểu dữ liệu

Chuyển đổi giữa các kiểu dữ liệu

C# SELF
Mức độ , Bài học
Có sẵn

1. Tại sao cần chuyển đổi kiểu?

C# là một ngôn ngữ kiểu tĩnh nghiêm ngặt. Nếu máy tính có một “hộp” dành cho số, thì cố nhét text vào đó cũng giống như cố cắm dĩa vào cổng USB vậy. Compiler sẽ không tha cho bạn đâu! 😡

Nhưng mà, trong thực tế tụi mình hay phải làm việc với nhiều kiểu dữ liệu cùng lúc. Ví dụ, bạn có một chuỗi chứa số. Đó là lúc cần chuyển đổi (hay còn gọi là ép kiểu) dữ liệu.

Xem ví dụ nhé. Giả sử bạn muốn lưu số lượng người dùng:

int a = 1;
int b = "2";
int c = "ba";

Compiler sẽ bảo ngay: “Bạn nghĩ tôi là ai? Tôi không tự động chuyển chuỗi thành số được đâu, bạn phải làm rõ ràng cho tôi biết".

Trong C# có vài cách chuyển đổi, mỗi cách đều có ưu, nhược điểm và những cái bẫy riêng.

2. Chuyển int sang string

Trong công việc, tụi mình hay cần lấy chuỗi biểu diễn số: ví dụ để in ra màn hình, lưu vào file, gửi qua mạng, nối với text v.v. Trong C# có mấy cách làm việc này, mỗi cách tiện cho từng tình huống khác nhau.

Hàm ToString()

Đây là cách chính và phổ biến nhất:

int number = 42;
string str = number.ToString();  // str == "42"

ToString() chuyển số thành chuỗi với định dạng mặc định cho kiểu dữ liệu đó.

String interpolation ($"...")

Cách hiện đại, tiện để ghép chuỗi với biến:

int number = 42;
string str = $"Số: {number}";

String interpolation sẽ tự động gọi ToString() cho giá trị được chèn vào.

Bạn có thể ghép nhiều biến và thậm chí chỉ định định dạng:

int number = 42;
string str = $"{number:D5}"; // "00042" — năm chữ số với số 0 ở đầu

Nối với chuỗi rỗng

Cách cũ nhưng vẫn chạy tốt:

int number = 42;
string str = number + "";

Cách này chạy nhanh cho trường hợp đơn giản, nhưng đọc code sẽ không rõ ràng bằng.

3. Ép kiểu ngầm sang chuỗi

Như đã nói ở trên, các dev C# đã làm cho mọi biến, object, biểu thức trong C# đều có thể chuyển sang kiểu string.

Thậm chí, việc này sẽ tự động xảy ra khi bạn cộng kiểu string với kiểu khác. Ví dụ:

int a = 5;
string name = "Anya" + a;            //  name chứa chuỗi Anya5

int a = 5;
string city = a + "New York" + a;   //  city chứa chuỗi 5New York5

int number = 10;
string code = "Yo";
string message = "Hello! " + number + code; //  message chứa chuỗi Hello! 10Yo

Cả ba ví dụ trên đều cộng biến kiểu intstring, kết quả luôn là kiểu string.

Lưu ý! Không thể thực hiện phép toán số học với kiểu string. Dù chuỗi đó toàn là số đi nữa.

Ví dụ:

int a = 5;
string name = "1" + a;              //  name chứa chuỗi 15

int a = 5;
string city = a + "9" + a;          //  city chứa chuỗi 595

int number = 10;
string code = "10";
string message = "" + number + code; // message chứa chuỗi 1010 

Phép cộng thực hiện từ trái sang phải, nên kết quả có thể hơi bất ngờ. Ví dụ:

int a = 5;
string name = a + a + "1" + a;      // name chứa chuỗi 1015

Thứ tự thực hiện: ((a + a) + "1") + a

4. Chuyển chuỗi thành số

Để chuyển số thành chuỗi trong C#, chỉ cần cộng nó với chuỗi rỗng:

string str = "" + số;

Thế còn muốn chuyển chuỗi thành số thì sao? Không phải chuỗi nào cũng chuyển thành số được đâu. Nhưng nếu chuỗi chỉ gồm số thì vẫn làm được. Kiểu int có hàm đặc biệt Parse() để làm việc này.

Lệnh này như sau:


int x = int.Parse("chuỗi")
Chuyển chuỗi thành số

Ở đây int x — là khai báo biến nguyên x, còn chuỗi — là số được ghi dưới dạng chuỗi (chuỗi chỉ gồm số).

Ví dụ:

string str = "123";
int number1 = int.Parse(str);        //  number1 chứa số 123;

int number2 = int.Parse("321");      //  number2 chứa số 321

int number3 = int.Parse("321" + 0);  //  number3 chứa số 3210

int number4 = "321"; //  Không biên dịch được: biến kiểu int, giá trị kiểu string

Với số âm cũng được luôn: hàm int.Parse() rất thông minh.

2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Chuyển đổi số thành chuỗi
Chuyển đổi số thành chuỗi
2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Chuyển đổi chuỗi thành số
Chuyển đổi chuỗi thành số
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION