Trang chủ Lập trình C# Chuyển đổi kiểu dữ liệu (Type Casting)
Lập trình C# 10/12/2024 580 lượt xem

Chuyển đổi kiểu dữ liệu (Type Casting)

Chuyển đổi kiểu dữ liệu là khi bạn muốn gán giá trị của một kiểu dữ liệu này sang kiểu dữ liệu khác

Difference Between Type Casting and Type Conversion - javatpoint

Trong C# có 2 cách chuyển đổi kiểu dữ liệu:

Implicit Casting (chuyển đổi ngầm định tự động)

Chuyển đổi kiểu dữ liệu range nhỏ hơn sang kiểu dữ liệu range lớn hơn.

char -> int -> long -> float -> double

int myInt = 9;

double myDouble = myInt;       // Automatic casting: int to double

 

Console.WriteLine(myInt);      // Outputs 9

Console.WriteLine(myDouble);   // Outputs 9

Explicit Casting (chuyển đổi tường minh bằng tay)

Chuyển đổi từ kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn

double -> float -> long -> int -> char

int five = 5;

var doubleFive = (double)five;

 

char a = 'a';

var valueA = (int)a;

 

float myFloat = 4.56F;

decimal myMoney = (decimal)myFloat;

 

           

 

Khác nhau giữa casting, parsing và converting

Casting: là chuyển 1 giá trị từ kiểu này sang kiểu khác hoặc xuất ra lỗi

int five = 5;

var doubleFive = (double)five;

 

char a = 'a';

var valueA = (int)a;

 

float myFloat = 4.56F;

decimal myMoney = (decimal)myFloat;

Conversion: Là cố chuyển một kiểu đối tượng sang kiểu khác, ít lỗi hơn nhưng chậm hơn

int five = 5;

decimal decFive = Convert.ToDecimal(five);

 

decimal myMoney = 5.67M;

int intMoney = Convert.ToInt32(myMoney); //Value is now 6;

                                                     //the decimal value was rounded

Parsing: Là cố chuyển một chuỗi sang một kiểu nguyên thuỷ

string testString = "10.22.2000";

double decValue = double.Parse(testString); //Exception thrown here!

 

string intTest = "This is a test string";

int intValue = int.Parse(intTest); //Exception thrown here!

string value = "5.0";

decimal result;

 

bool isValid = decimal.TryParse(value, out result);

Khác nhau giữa Parse và Convert

string s1 = "1234";

string s2 = "1234.65";

string s3 = null;

string s4 = "123456789123456789123456789123456789123456789";

result = Int32.Parse(s1);    //1234

result = Int32.Parse(s2);    //FormatException

result = Int32.Parse(s3);    //ArgumentNullException

result = Int32.Parse(s4);    //OverflowException

result = Convert.ToInt32(s1);    // 1234

result = Convert.ToInt32(s2);    // FormatException

result = Convert.ToInt32(s3);    // 0

result = Convert.ToInt32(s4);    // OverflowException

TryParse()

Trong trường hợp chúng ta không biết liệu một string có thể chuyển sang kiểu nào đó hay không thì chúng ta có thể dùng TryParse()

string value = "5.0";

decimal result;

bool isValid = decimal.TryParse(value, out result);

Nếu giá trị biến isValid là true có nghĩa là chuỗi có thể chuyển thành công, còn ngược lại thì là fail. Từ khoá out chúng ta sẽ học trong phần sau.

Từ khoá mới

Từ khoá is: Sử dụng để kiểm tra nếu một giá trị cụ thể là một kiểu cụ thể

var myValue = 6.5M; //M literal means type will be decimal

if (myValue is decimal) { /*...*/ }

Từ khoá as: Sử dụng để chuyển một object từ một kiểu sang một kiểu khác

 Ví dụ 1:

string testString = "This is a test"; //string is a reference type

object objString = (object)testString; //Cast the string to an object

 

string test2 = objString as string; //Will convert to string successfully

Ví dụ 2:

public class ClassA { /*...*/ }

public class ClassB { /*...*/ }

 

var myClass = new ClassA();

var newClass = myClass as ClassB; //Exception thrown here!

Ví dụ 3:

public class ClassA { /*...*/ }

public class ClassB : ClassA { /*...*/ }

 

var myClass = new ClassB();

var convertedClass = myClass as ClassA;

Từ khoá typeof: Trả về kiểu của một đối tượng

var sentence = "This is a sentence.";

var type = sentence.GetType();

if (type == typeof(string)) { /*...*/ }

else if (type == typeof(int)) { /*...*/ }

Tổng kết

 

Tác giả: Bạch Ngọc Toàn

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Chia sẻ:

Bài viết liên quan

Tìm hiểu về các loại Collection trong C#
11/12/2024 Bạch Ngọc Toàn

Tìm hiểu về các loại Collection trong C#

Trong C#, collections là các cấu trúc dữ liệu được sử dụng để lưu trữ và quản lý các nhóm đối tượng. C# cung cấp nhiều loại collections khác nhau để phù hợp với các yêu cầu cụ thể của lập trình viên

Đọc thêm
Sử dụng mảng (Arrays)
11/12/2024 Bạch Ngọc Toàn

Sử dụng mảng (Arrays)

Mảng trong C# là một cấu trúc dữ liệu lưu trữ một dãy các phần tử có bộ nhớ nằm liên tiếp nhau và có kích thước cố đinh.

Đọc thêm
Lập trình hướng đối tượng
11/12/2024 Bạch Ngọc Toàn

Lập trình hướng đối tượng

Lập trình hướng đối tượng (Object Oriented Programing) hay còn gọi là OOP. Là một kỹ thuật lập trình cho phép các lập trình viên có thể ánh xạ các thực thể bên ngoài đời thực và trừu tượng hoá thành các class và object trong mã nguồn.

Đọc thêm
Vòng lặp (loop)
11/12/2024 Bạch Ngọc Toàn

Vòng lặp (loop)

Trong thực tế khi bạn cần thực thi một khối lệnh nhiều lần. Vòng lặp cho phép chúng ta thực thi một câu lệnh hoặc một khối lệnh nhiều lần.

Đọc thêm