Bài 04: Kiểu dữ liệu trong C#

0
1312

Biến trong C# được phân loại thành các kiểu: kiểu giá trị, kiểu tham chiếu và kiểu con trỏ.

Kiểu giá trị – value type

  • Biến kiểu này có thể được gán giá trị trực tiếp. Chúng được bắt nguồn từ class ValueType
  • Kiểu giá trị chứa dữ liệu trực tiếp. Ví dụ như kiểu int, charfloat lần lượt chứa số, ký tự alphabet và số dấu chấm động. Khi ta khai báo một biến kiểu int, hệ thống cấp phát vùng nhớ để chứa giá trị.
  • Dưới đây là danh sách kiểu dữ liệu trong C#
Kiểu Biểu diễn Dãy giá trị Giá trị mặc định
bool Giá trị Boolean True hoặc False False
byte Kiểu unsigned integer (8 bit) 0 tới 255 0
char Kiểu Unicode character (16 bit) U +0000 tới U +ffff ‘\0’
decimal Kiểu thập phân (128 bit) (-7.9 x 1028 tới 7.9 x 1028) / 100 to 28 0.0M
double Kiểu double (64 bit) (+/-)5.0 x 10-324 tới (+/-)1.7 x 10308 0.0D
float Kiểu float (32 bit) -3.4 x 1038 tới + 3.4 x 1038 0.0F
int Kiểu integer (32 bit) -2,147,483,648 tới 2,147,483,647 0
long Kiểu signed integer (64 bit) -9,223,372,036,854,775,808 tới 9,223,372,036,854,775,807 0L
sbyte Kiểu signed integer (8 bit) -128 tới 127 0
short Kiểu signed integer (16 bit) -32,768 tới 32,767 0
uint Kiểu unsigned integer (32 bit) 0 tới 4,294,967,295 0
ulong Kiểu unsigned integer (64 bit) 0 tới 18,446,744,073,709,551,615 0
ushort Kiểu unsigned integer (16 bit) 0 tới 65,535 0
  • Để biết chính xác độ lớn của một kiểu dữ liệu hoặc một biến bạn có thể sử dụng phương thức sizeof. Biểu thức sizeof(type) trả về kích thước lưu trữ của đối tượng hoặc kiểu theo đơn vị byte. Sau đây là một ví dụ để lấy kích thước của biến kiểu int:
using System;
namespace DataTypeApplication
{
   class Program 
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Kich thuoc kieu du lieu int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

Kết quả khi biên dịch và thực thi đoạn code trên là dòng chữ:

Kich thuoc kieu du lieu int: 4

Kích thước một số kiểu dữ liệu

Name CTS Type Size
sbyte System.SByte 8
short System.Int16 16
int Sytem. Int32 32
long Sytem. Int64 64
byte System.SByte 8
ushort System.UInt16 16
uint System.UInt32 32
ulong System.UInt64 64
float System.Single 32
double System.Double 64
decimal System.Decimal 128
bool System.Boolean
char System.Char 16

Kiểu tham chiếu – reference type

Kiểu này không chứa dữ liệu thực sự mà nó chứa một sự tham khảo trong biến. Nói cách khác, nó tham chiếu tới một vùng nhớ. Kiểu tham chiếu có thể tạo ra nhiều biến cùng tham chiếu đến một vùng nhớ. Nếu dữ liệu trong vùng nhớ bị thay đổi bới một biến nào đó, thì những biến khác cũng sẽ thay đổi giá trị một cách tự động. Ví dụ object, dynamicstring là kiểu tham chiếu.

  • Kiểu object: là class nền tảng cơ bản cho mọi kiểu dữ liệu trong C# common type system (CTS). Object là một bí danh của class Object. Kiểu object có thể gán giá trị của mọi kiểu dữ liệu khác, kiểu giá trị, kiểu tham chiếu, kiểu định nghĩa trước hoặc do người dùng định nghĩa. Tuy nhiên trước khi gán giá trị, nó cần chuyển kiểu. Khi chuyển kiểu value sang object, đó được gọi là boxing và mặt khác, khi kiểu object được chuyển sang kiểu value được gọi là unboxing.

Ví dụ: 

object obj;
obj = 100; // this is boxing
  • Kiểu dynamic: ta có thể lưu bất kỳ kiểu giá trị nào trong biến kiểu dữ liệu động. Kiểm tra kiểu cho kiểu của biến dynamic diễn ra vào thời gian chạy. Cú pháp để khai báo biến kiểu dynamic là:
dynamic <variable_name> = value;

Kiểu dynamic tương tự kiểu object ngoại trừ kiểm tra kiểu cho kiểu biến object diễn ra tại thời điểm biên dịch, nhưng trái lại kiểm tra kiểu cho kiểu dynamic diễn ra vào thời gian chạy.

  • Kiểu string: cho phép gán giá trị là chuỗi vào biến. Kiểu string là một bí danh của class String. Nó có nguồn gốc từ kiểu object. Giá trị gán sử dụng một trong 2 cách quoted và @quoted.

Ví dụ:

String str = "sinhvientot.net";-> quoted
@"sinhvientot.net";->@quoted
  • Những kiểu tham chiếu do người dùng định nghĩa là class, interface hoặc delegate.

Kiểu con trỏ – pointer type

Biến kiểu con trỏ lưu địa chỉ bộ nhớ của kiểu khác. Con trỏ trong C# có cùng khả năng như con trỏ trong C hoặc C++. Cú pháp để khai báo biến kiểu con trỏ là: type* identifier,

Ví dụ:

char* cptr;
int* iptr;

Xem thêm Bài 05: Cách chuyển kiểu dữ liệu (Type Conversion) trong C#

This site uses Akismet to reduce spam. Learn how your comment data is processed.