/ / Cách chuyển đổi và phân tích các loại dữ liệu khác nhau trong C#

Cách chuyển đổi và phân tích các loại dữ liệu khác nhau trong C#

Khi bạn khai báo một biến mới trong C#, thông thường bạn sẽ khởi tạo biến đó với một kiểu dữ liệu cụ thể. Đây có thể là một số nguyên, số thập phân, boolean, chuỗi hoặc một loại dữ liệu khác.


Bạn có thể chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác. Ví dụ: nếu bạn đang chuyển đổi một chuỗi thành một số nguyên, trước tiên bạn cần phân tích cú pháp giá trị. Dưới đây là một vài cách khác nhau mà bạn có thể chuyển đổi và phân tích giá trị.


Tại sao bạn cần chuyển đổi hoặc phân tích dữ liệu?

Một ví dụ về thời điểm bạn có thể cần phân tích cú pháp dữ liệu là nếu bạn đang yêu cầu đầu vào của người dùng trong ứng dụng bảng điều khiển C#:


Console.WriteLine("Enter your age:");
string salary = Console.ReadLine();

Trong trường hợp này, người dùng sẽ nhập một giá trị số nguyên, nhưng ứng dụng sẽ lưu trữ nó dưới dạng chuỗi theo mặc định. Nếu bạn cố gắng sử dụng giá trị chuỗi trong bất kỳ phép tính nào, bạn sẽ gặp lỗi biên dịch:

Lỗi biên dịch toán hạng kép chuỗi

Một lý do khác để chuyển đổi kiểu dữ liệu là truy cập một số phương thức chỉ khả dụng cho một kiểu dữ liệu cụ thể. Ví dụ, cấu trúc DateTime chứa một hàm cho phép bạn thêm phút. Thay vào đó, nếu bạn đang sử dụng một chuỗi, bạn sẽ không có quyền truy cập vào phương thức:

Lỗi biên dịch hàm DateTime AddMinutes

Bạn cũng có thể muốn chuyển đổi một giá trị thành một kiểu dữ liệu khác nếu bạn cần tuân theo cấu trúc kiểu dữ liệu của một lớp được tạo trong C# hoặc một cấu trúc trong C#.

Cách chuyển đổi và phân tích các loại dữ liệu khác nhau

Bạn có thể phân tích cú pháp các kiểu dữ liệu khác nhau như số nguyên, số đôi, kiểu boolean và kiểu ngày giờ.

Chuỗi thành số nguyên

Để chuyển đổi một chuỗi thành một số nguyên, hãy sử dụng phương thức Parse():


string strInt = "45";
int int32 = Int32.Parse(strInt);
Console.WriteLine(int32);

Bạn cũng có thể phân tích chuỗi thành các số nguyên có kích thước bit khác nhau, chẳng hạn như Int16, Int32 hoặc Int64.


int int16 = Int16.Parse(strInt);
Console.WriteLine(int16);

Nếu bạn đang sử dụng phương thức Parse(), hãy đảm bảo rằng giá trị chuỗi đại diện cho một số nguyên. Nếu bạn cố phân tích cú pháp một giá trị không phải là số nguyên, chẳng hạn như “Xin chào”, bạn sẽ nhận được lỗi phân tích cú pháp khi chạy.


string invalidString = "Hello";
int invalidResult = Int32.Parse(invalidString);

Lỗi thời gian chạy chuỗi Int không hợp lệ

Bạn cũng có thể sử dụng phương thức TryParse() để bắt bất kỳ ngoại lệ nào có thể xảy ra khi phân tích cú pháp:


int tryParseResult = 0;

if (Int32.TryParse(invalidString, out tryParseResult))
{
Console.WriteLine(tryParseResult);
}
else
{
Console.WriteLine("Something went wrong");
}

Để chuyển đổi một số nguyên thành một chuỗi, hãy sử dụng phương thức ToString():


string intString = 45.ToString();
Console.WriteLine(intString);

Chuỗi để nhân đôi

Phân tích cú pháp một chuỗi thành số kép rất giống với phân tích cú pháp một thành số nguyên. Sử dụng phương thức Parse() từ lớp Double:


string strDouble = "90.5";
double d = Double.Parse(strDouble);
Console.WriteLine(d);

Đối với số nguyên, bạn cũng có thể sử dụng phương thức TryParse() để phát hiện bất kỳ lỗi phân tích cú pháp nào có thể xảy ra:


string invalidStringDouble = "Hello";
double tryParseDouble = 0;

if (Double.TryParse(invalidStringDouble, out tryParseDouble))
{
Console.WriteLine(tryParseDouble);
}

Để chuyển đổi một số kép trở lại một số nguyên, hãy sử dụng phương thức ToString():


double dDouble = 90.5;
string dString = dDouble.ToString();
Console.WriteLine(dString);

nhân đôi thành số nguyên

Bạn có thể sử dụng tính năng truyền để chuyển đổi số kép thành số nguyên. Vì một số nguyên chỉ lưu trữ một số nguyên nên việc chuyển đổi sẽ loại bỏ các chữ số thập phân. Ví dụ: chuyển đổi “12.34” sẽ chỉ lưu trữ giá trị “12”.


double dValue = 12.34;
int iValue = (int)dValue;
Console.WriteLine(iValue);

Bạn cũng có thể chuyển một số nguyên thành gấp đôi:


dValue = (double)iValue;
Console.WriteLine(dValue);

Chuỗi và giá trị Boolean

Để chuyển đổi một chuỗi thành boolean, hãy sử dụng phương thức Parse() hoặc ToBoolean():


string stringBool = "True";
bool b = bool.Parse(stringBool);

b = Convert.ToBoolean(stringBool);
Console.WriteLine(b);

Để chuyển đổi một boolean trở lại một chuỗi, hãy sử dụng phương thức ToString():


string strTrue = true.ToString();
string strFalse = false.ToString();

Số nguyên và giá trị Boolean

Để chuyển đổi một số nguyên thành boolean, hãy sử dụng phương thức ToBoolean() để chuyển đổi “1” hoặc “0” thành giá trị boolean tương đương của nó. Giá trị “1” sẽ chuyển thành “true” trong khi “0” chuyển thành “false”:


int falseBit = 0;
int trueBit = 1;
Console.WriteLine(Convert.ToBoolean(falseBit));
Console.WriteLine(Convert.ToBoolean(trueBit));

Bạn cũng có thể chuyển một giá trị số nguyên khác “1” hoặc “0” cho phương thức ToBoolean(). Theo mặc định, phương thức sẽ vẫn trả về “true”:


int invalidBit = 8;
Console.WriteLine(Convert.ToBoolean(invalidBit));

Để chuyển đổi một giá trị boolean trở lại thành một số nguyên, hãy sử dụng phương thức Convert.ToInt32(). Chuyển đổi “true” sẽ trả về “1” và chuyển đổi “false” sẽ trả về “0”.


bool iBool = true;
int bInt = Convert.ToInt32(iBool);
Console.WriteLine(bInt);

Chuỗi thành DateTime

Để phân tích một chuỗi thành định dạng ngày giờ, hãy sử dụng phương thức DateTime.Parse():


DateTime newDateTime = DateTime.Parse("01/01/2018 00:00:00");
Console.WriteLine(newDateTime);

Để chuyển đổi một ngày giờ trở lại thành một chuỗi, hãy sử dụng phương thức ToString():


DateTime dt = new DateTime(2018, 1, 1);
string dtString = dt.ToString();
Console.WriteLine(dtString);

Phân tích giá trị thành các loại dữ liệu khác nhau

Bây giờ bạn đã hiểu cách chuyển đổi giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác. Đây không phải là những chuyển đổi duy nhất hiện có, vì vậy, vui lòng tìm hiểu thêm về các loại dữ liệu khác trong C#.

Bạn cũng có thể khám phá cách các loại dữ liệu khác hoạt động trong các ngôn ngữ khác, chẳng hạn như JavaScript.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *