Ép kiểu dữ liệu trong C#

C# làngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh về kiểu dữ liệu là phải khai báo kiểu của mỗi đối tượng khi tạo (kiểu số nguyên, số thực, kiểu chuỗi, kiểu điều khiển…) và trình biên dịch sẽ giúp cho người lập trình không bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể được gán cho các kiểu dữ liệu khác. Để hiểu rõ hơn về chuyển đổi kiểu dữ liệu, mời bạn đọc tham khảo bài viết dưới đây của eLib

Ép kiểu dữ liệu trong C#

Ép kiểu trong C# là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác. Nó còn được gọi là chuyển đổi kiểu dữ liệu.

1. Phân loại ép kiểu trong C#

Trong C#, ép kiểu có hai mẫu sau:

  • Ép kiểu ngầm định (implicit) - Việc chuyển đổi này được thực hiện bởi C# theo một phương thức an toàn (type-safe). Ví dụ: việc chuyển đổi từ các lớp kế thừa thành các lớp cơ sở.

  • Ép kiểu tường minh (explicit) - Việc chuyển đổi này được thực hiện một cách rõ ràng bởi người dùng bằng việc sử dụng các hàm được định nghĩa trước. Các chuyển đổi kiểu tường minh sử dụng toán tử cast.

2. Phân loại ép kiểu tường minh trong C#

Ví dụ ép kiểu tường minh trong C#:

loat c = 35.8f;
int b = (int) c + 1;

Trong ví dụ trên, đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 35. Sau đó nó được cộng với 1 và kết quả là giá trị 36 được lưu vào b.

Có 2 loại ép kiểu tường minh trong C#:

  1. Nới rộng (widening): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin.
  2. Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin

Nới rộng (widening)

Ví dụ sau minh họa một ép kiểu nới rộng trong C#:

using System;
namespace Csharp
{
    class EpKieuNoiRongCsharp
    {
        static void Main(string[] args)
        {
            int i = 100;
            long l = i;    // không yêu cầu chỉ định ép kiểu
            float f = l;   // không yêu cầu chỉ định ép kiểu
            Console.WriteLine("Gia tri Int: " + i);
            Console.WriteLine("Gia tri Long: " + l);
            Console.WriteLine("Gia tri Float:  " + f);
            Console.ReadKey();
        }
    }
}

Trên Visual Studio nhấn: CTRL + F5 để biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Thu hẹp (narrowwing)

Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.

Ví dụ sau minh họa một ép kiểu thu hẹp trong C#:

using System;
namespace Csharp
{
    class EpKieuThuHepCsharp
    {
        static void Main(string[] args)
        {
            double d = 100.04;
            long l = (long)d; // yêu cầu chỉ định kiểu dữ liệu (long)
            int i = (int)l; // yêu cầu chỉ định kiểu dữ liệu (int)

            Console.WriteLine("Gia tri Double: " + d);
            Console.WriteLine("Gia tri Long: " + l);
            Console.WriteLine("Gia tri Int:  " + i);
            Console.ReadKey();
        }
    }
}

Trên Visual Studio nhấn: CTRL + F5 để biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

3. Vấn đề sai dữ liệu khi thu hẹp dữ liệu

Ví dụ sau minh họa sai số khi ép kiểu thu hẹp trong C#, ví dụ sau mô tả ép kiểu double thành kiểu int, vấn đề ở đây là giá trị của biến d = 2999999999.04 lớn hơn giá trị giới hạn của kiểu dữ liệu int , điều này dẫn đến vấn đề sai số:

using System;
namespace Csharp
using System;
namespace VietTutsCsharp
{
    class EpKieuThuHep2Csharp
    {
        static void Main(string[] args)
        {
            double d = 2999999999.04;
            long l = (long)d; // yêu cầu chỉ định kiểu dữ liệu (long)
            int i = (int)l; // yêu cầu chỉ định kiểu dữ liệu (int)

            Console.WriteLine("Gia tri Double: " + d);
            Console.WriteLine("Gia tri Long: " + l);
            Console.WriteLine("Gia tri Int:  " + i);
            Console.ReadKey();
        }
    }
}

Trên Visual Studio nhấn: CTRL + F5 để biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

4. Phương thức chuyển đổi kiểu dữ liệu trong C#

C# cung cấp các phương thức chuyển đổi kiểu có sẵn được liệt kê trong bảng sau:

STT Phương thức & Mô tả
1 ToBoolean

Chuyển đổi một kiểu thành một giá trị Boolean, nếu có thể

2 ToByte

Chuyển đổi một kiểu thành một byte

3 ToChar

Chuyển đổi một kiểu thành một Unicode character, nếu có thể

4 ToDateTime

Chuyển đổi một kiểu (kiểu integer hoặc string) thành các cấu trúc date-time

5 ToDecimal

Chuyển đổi một kiểu số thực hoặc số nguyên thành một kiểu thập phân

6 ToDouble

Chuyển đổi một kiểu thành một kiểu double

7 ToInt16

Chuyển đổi một kiểu thành một 16-bit integer

8 ToInt32

Chuyển đổi một kiểu thành một 32-bit integer

9 ToInt64

Chuyển đổi một kiểu thành một 64-bit integer

10 ToSbyte

Chuyển đổi một kiểu thành một kiểu signed byte

11 ToSingle

Chuyển đổi một kiểu thành một số small floating point

12 ToString

Chuyển đổi một kiểu thành một string

13 ToType

Chuyển đổi một kiểu thành một kiểu đã xác định

14 ToUInt16

Chuyển đổi một kiểu thành một kiểu unsigned int

15 ToUInt32

Chuyển đổi một kiểu thành một kiểu unsigned long

16 ToUInt64

Chuyển đổi một kiểu thành một unsigned big integer

Ví dụ sau minh họa cách chuyển đổi các kiểu dữ liệu khác thành kiểu dữ liệu string trong C#:

using System;
namespace Csharp
{
    class EpKieuStringCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Ep kieu String trong C#");
            Console.WriteLine("----------------------------------");
            int i = 123;
            float f = 10.05f;
            double d = 12345.6789;
            bool b = false;
            //su dung phuong thuc ToString()
            Console.WriteLine(i.ToString());
            Console.WriteLine(f.ToString());
            Console.WriteLine(d.ToString());
            Console.WriteLine(b.ToString());
            Console.ReadKey();
        }
    }
}
Trên Visual Studio nhấn: CTRL + F5 để biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Trên đây là bài viết của eLib.VN về Ép kiểu dữ liệu trong C#. Hy vọng bài viết hữu ích cho bạn đọc. Chúc các bạn giữ vững đam mê học lập trình, đặc biệt đối với là ngôn ngữ C#.

Ngày:30/10/2020 Chia sẻ bởi:Phuong

CÓ THỂ BẠN QUAN TÂM