Nội dung
Trong bài viết này, chúng ta sẽ cùng tìm hiểu về biến (variable), hằng, cách tạo và các kiểu dữ liệu trong C# cơ bản.
1. Cách khai báo biến Variable trong C#?
Trước tiên, biến là một tên tượng trưng cho vị trí bộ nhớ. Chúng được sử dụng để lưu trữ dữ liệu trong chương trình máy tính.
Hãy xem ví dụ dưới đây về khai báo biến trong C# (ngôn ngữ lập trình)
int age;
Trong ví dụ này, variable age của loại dữ liệu int (integer – số nguyên) được khai báo và nó chỉ có thể lưu trữ các giá trị nguyên.
Chúng ta có thể gán một giá trị cho variable trong những đoạn sau của chương trình như sau:
int age;
… … …
age = 24;
Tuy nhiên, biến cũng có thể được khởi tạo thành một số có giá trị khi khai báo. Ví dụ:
int age = 24;
Ở đây variable age của loại dữ liệu int được khai báo và khởi tạo thành 24 cùng lúc.
Vì variable là biến (biến đổi), chúng ta có thể thay đổi giá trị của chúng. Ví dụ:
int age = 24;
age = 35;
Ở đây, giá trị của age bị thay đổi từ 35 thành 24.
Variable trong C# cần phải được khai báo trước khi được sử dụng. Có nghĩa là tên và loại dữ liệu của biến phải được xác định trước khi bạn gán giá trị cho nó.
Đó là lý do tại sao Variable được xem là statically-typed language (ngôn ngữ định kiểu tĩnh)
Sau khi được khai báo, bạn không thể thay đổi kiểu dữ liệu của biến trong tầm vực (scope).
Một scope có thể xem như một khối mã nơi biến có thể nhìn thấy hoặc có sẵn để sử dụng. Nếu bạn thấy nó khó hiểu, đừng lo lắng, chúng tôi sẽ đi sâu vào scope trong những phần tiếp theo.
Còn bây giờ, bạn cần phải nhớ rằng chúng ta không thể thực hiện điều sau đây trong C#:
int age;
age = 24;
… … …
float age;
1.1 Nhập Variable ngầm
Chúng ta có thể khai báo biến trong C# mà không cần phải biết kiểu dữ liệu của nó bằng cách sử dụng keyword var. Các biến như vậy được gọi là các biến cục bộ được nhập ngầm định.
Những variable được khai báo bằng keyword var phải được khởi tạo tại thời điểm khai báo.
var value = 5;
Trình biên dịch sẽ xác định loại biến từ giá trị được gán cho biến. Trong ví dụ trên, value thuộc loại int. Như vậy nó cũng sẽ tương tự với việc bạn viết:
int value;
value = 5;
Bạn có thể tìm hiểu thêm về variable cục bộ được nhập ngầm.
1.2 Quy tắc đặt tên Variable trong C#
Có một số quy tắc nhất định chúng ta cần tuân theo khi đặt tên cho biến trong C# là:
- Variable chỉ có thể bao gồm các chữ cái (in hoa và chữ thường), dấu gạch dưới (_) và các chữ số.
- Variable phải bắt đầu bằng chữ cái, gạch dưới hoặc ký hiệu @. Dưới đây là ví dụ về tên variable hợp lệ (Valid) và không hợp lệ (invalid):
Tên của Variable | Nhận xét |
name | Valid |
subject101 | Valid |
_age | Valid (Thường được dùng để đặt tên các Variable riêng biệt) |
@break | Valid (Được sử dụng nếu tên là keyword dành riêng) |
101subject | Invalid (Bắt đầu bằng số 101) |
your_name | Valid |
your name | Invalid (Chứa khoảng trắng) |
- C# phân biệt in hoa và viết thường. Vì thế age và Age được xem là hai Variable khác nhau
- Variable không được dùng Keyword C#. Ví dụ, if, for, using không được dùng làm tên variable. Chúng ta sẽ đi sâu hơn vào C# keywords trong những bài tiếp theo.
1.3 Các phương pháp đặt tên Variable hay nhất
- Chọn một tên biến mang ý nghĩa nhất định. Ví dụ, name, age, subject (tên, tuổi, chủ đề) có nghĩa hơn là n, a hay s.
- Viết code theo dạng lạc đà u bướu (camelCase – bắt đầu bằng chữ thường) khi đặt tên cho các biến cục bộ. Ví dụ, numberOfStudents, age,…
- Sử dụng PascalCase hoặc CamelCase (bắt đầu bằng chữ in hoá) để đặt tên cho các biến thành viên (variable member) công khai. Ví dụ như, FirstName, Price,…
- Sử dụng dấu gạch dưới (_) để bắt đầu, theo sau đó viết chữ theo dạng camelCase để đặt tên cho các variable member riêng tư. Ví dụ, _bankBalance, _emailAddress,…
Nếu bạn không hiểu về variable member công khai và riêng tư, đừng nóng vội, chúng tôi sẽ đi sâu vào chúng trong những bài tiếp theo!
2. Các kiểu dữ liệu trong C# cơ bản
Các kiểu biến trong C# được phân loại thành hai loại: Giá trị (Value) và tham chiếu (Reference). Trong phần này, chúng ra chỉ bàn đến các kiểu dữ liệu trong C# nguyên thuỷ, chúng là lớp con của Value.
Kiểu Reference sẽ được đề cập trong các bài hướng dẫn sau để bạn không bị rối. Tuy nhiên, nếu bạn muốn biết thêm về các loại khác của variable, hãy truy cập C# Types and Variable.
2.1 Kiểu dữ liệu Boolean trong C# (bool)
- Kiểu dữ liệu Boolean có 2 giá trị là: true hoặc false
- Giá trị mặc định: false
- Boolean variable thường được sử dụng để kiểm tra các điều kiện như if statements, loops,…
Ví dụ:
using System;
namespace DataType
{
class BooleanExample
{
public static void Main(string[] args)
{
bool isValid = true;
Console.WriteLine(isValid);
}
}
}
Khi chương trình chạy, kết quả trả về sẽ là:
True
2.2 Kiểu dữ liệu có dấu (signed)
Các kiểu dữ liệu trong C# này giữ các giá trị số nguyên (cả dương và âm). Trong tổng số các bit có sẵn, sẽ có 1 bit được sử dụng để làm dấu.
- Kiểu sbyte
- Kích thước: 8 bits
- Phạm vi: -128 to 127.
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class SByteExample
{
public static void Main(string[] args)
{
sbyte level = 23;
Console.WriteLine(level);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
23
Hãy thử gán các giá trị ngoài phạm vi (nhỏ hơn -128 và lớn hơn 127) để xem điều gì sẽ xảy ra nhé.
- Kiểu short
- Kích thước: 16 bits
- Phạm vi: -32,768 to 32,767
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class ShortExample
{
public static void Main(string[] args)
{
short value = -1109;
Console.WriteLine(value);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
-1109
- Kiểu int
- Kích thước: 32 bits
- Phạm vi: -231 to 231-1
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class IntExample
{
public static void Main(string[] args)
{
int score = 51092;
Console.WriteLine(score);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
51092
- Kiểu long
- Kích thước: 64 bits
- Phạm vi: -263 to 263-1
- Giá trị mặc định: 0L [L biểu thị giá trị của long)
Ví dụ:
using System;
namespace DataType
{
class LongExample
{
public static void Main(string[] args)
{
long range = -7091821871L;
Console.WriteLine(range);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
-7091821871
2.3 Kiểu dữ liệu không dấu (unsighed)
Kiểu dữ liệu trong C# này chỉ chứa các giá trị lớn hơn hoặc bằng 0. Thông thương, chúng ta sử dụng loại dữ liệu này để lưu trữ các giá trị dương.
- Kiểu byte
- Kích thước: 8 bits
- Phạm vi: 0 to 255.
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class ByteExample
{
public static void Main(string[] args)
{
byte age = 62;
Console.WriteLine(level);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
62
- Kiểu ushort
- Kích thước: 16 bits
- Phạm vi: 0 to 65,535
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class UShortExample
{
public static void Main(string[] args)
{
ushort value = 42019;
Console.WriteLine(value);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
42019
- Kiểu uint
- Kích thước: 32 bits
- Phạm vi: 0 to 232-1
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class UIntExample
{
public static void Main(string[] args)
{
uint totalScore = 1151092;
Console.WriteLine(totalScore);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
1151092
- Kiểu ulong
- Kích thước: 64 bits
- Phạm vi: 0 to 264-1
- Giá trị mặc định: 0
Ví dụ:
using System;
namespace DataType
{
class ULongExample
{
public static void Main(string[] args)
{
ulong range = 17091821871L;
Console.WriteLine(range);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
17091821871
2.4 Kiểu dữ liệu Floating Point (dấu chấm động)
Kiểu dữ liệu C# Float này chứa các dấu chấm động (floating point), tức là các số chứa giá trị thập phân như: 12.36, -92.17, etc.
- Kiểu float
- Kích thước: 32 bits
- Phạm vi: 1.5 × 10−45 to 3.4 × 1038
- Giá trị mặc định: 0.0F [F ở cuối đại diện cho loại float]
Ví dụ:
using System;
namespace DataType
{
class FloatExample
{
public static void Main(string[] args)
{
float number = 43.27F;
Console.WriteLine(number);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
43.27
- Kiểu double
- Kích thước: 64 bits
- Phạm vi: 5.0 × 10−324 to 1.7 × 10308
- Giá trị mặc định: 0.0D [D đại diện cho giá trị của double]
Ví dụ:
using System;
namespace DataType
{
class DoubleExample
{
public static void Main(string[] args)
{
double value = -11092.53D;
Console.WriteLine(value);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
-11092.53
2.5 Kiểu dữ liệu Character (char)
- Kiểu dữ liệu Char đại điện cho ký tự bộ mã thống nhất (unicode) 16 bit
- Kích thước: 16 bits
- Giá trị mặc định: ‘\0’
- Phạm vi: U+0000 (‘\u0000’) to U+FFFF (‘\uffff’)
Ví dụ:
using System;
namespace DataType
{
class CharExample
{
public static void Main(string[] args)
{
char ch1 =’\u0042′;
char ch2 = ‘x’;
Console.WriteLine(ch1);
Console.WriteLine(ch2);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
B
x
Giá trị unicode của ‘B’ là ‘\u0042’, do đó khi in ch1 cũng là in ‘B’.
2.6 Kiểu dữ liệu thập phân (Decimal)
- Kiểu dữ liệu thập phân có độ chính xác cao hơn và phạm vi nhỏ hơn so với kiểu dữ liệu Floating Point ( bao gồm kiểu float và kiểu C# double). Vì thế, nó thích hợp cho việc tính toán tiền tệ.
- Kích thước: 128 bits
- Giá trị mặc định: 0.0M [M biểu thị cho giá trị của thập phân]
- Phạm vi: (-7.9 x 1028 to 7.9 x 1028) / (100 to 28)
Ví dụ:
using System;
namespace DataType
{
class DecimalExample
{
public static void Main(string[] args)
{
decimal bankBalance = 53005.25M;
Console.WriteLine(bankBalance);
}
}
}
Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:
53005.25
Hậu tố M hoặc m cần phải được thêm vào cuối Decimal. Nếu không giá trị sẽ bị xem như kiểu dữ liệu double và gây ra error khi chạy.
3. Hằng trong C# (C# Literals)
Trước tiên, hãy cùng tôi xem xét câu lệnh bên dưới:
int number = 41;
Ở đây,
- int là loại dữ liệu
- number là variable
- 41 chính là hằng (literal)
Literals là các giá trị cố định xuất hiện trong chương trình. Chúng không cần được tính toán.
Ví dụ: 5, false, ‘w’ là literal, chúng xuất hiện trực tiếp trong chương trình mà không cần tính toán gì cả.
3.1 Hằng Boolean (Boolean Literals)
- true và false là các ký tự hằng Bool có sẵn
- Chúng được sử dụng để khởi tạo các biến Bool (Boolean Variable).
Ví dụ:
bool isValid = true;
bool isPresent = false;
3.2 Hằng nguyên (Integer Literals)
- Integer literals thường được dùng để khởi tạo các Variable kiểu dữ liệu số nguyên (Tức là kiểu sbyte, short, int, long, byte, ushort, uint và ulong)
Nếu hằng nguyên kết thúc với L hoặc l, thì nó thuộc dạng “long”. Để chương trình chạy mượt hơn, bạn nên sử dụng L (thay vì l).
long value1 = 4200910L;
- long value2 = -10928190L;
Nếu một integer bắt đầu bằng số 0 (0x), nó đại diện cho giá trị hệ cơ số 16 (hexadecimal). Số không có tiền tố sẽ được coi là giá trị thập phân.
Hệ cơ số 8 (octal) và hệ cơ nhị phân (binary) không được phép hiển thị trong C#.
int decimalValue = 25;
- int hexValue = 0x11c;// decimal value 284
3.3 Floating Point Literals
- Floating point literals (tạm dịch hằng dấu chấm động) thường được dùng để khởi tạo các biến của kiểu dữ liệu float và double.
- Nếu một floating point literal kết thúc bằng f hoặc F, vậy nó thuộc loại float. Tương tự, nếu nó kết thúc bằng d hoặc D, nó thuộc loại double. Nếu nó không có hậu tố nào thì nó sẽ mặc định thuộc double.
Những hằng này sẽ chứa e hoặc E khi được biểu thị bằng scientificNotation.
double number = 24.67;// double by default
float value = -12.29F;
- double scientificNotation = 6.21e2;// equivalent to 6.21 x 102 i.e. 621
3.4 Hằng ký tự và hằng chuỗi (Character và String Literals)
- Character literals (Hằng ký tự) được dùng để khởi tạo các biến của kiểu dữ liệu Char. Character literals được đặt trong dấu ngoặc đơn. Ví dụ, ‘x’,’p’, etc.
Chúng có thể được đặt ở dạng ký tự, chuỗi thoát hexadecimal, đại diện unicode hoặc các giá trị tích phân được chuyển thành Char.
char ch1 = ‘R’;// character
char ch2 = ‘\x0072’;// hexadecimal
char ch3 = ‘\u0059’;// unicode
char ch4 = (char)107;// casted from integer
- String literals (Hằng chuỗi) là tập hợp các hằng kí tự.
Chúng được đặt trong dấu ngoặc kép, ví dụ: “Hello”, “Easy Programming”, etc.
string firstName = “Richard”;
string lastName = ” Feynman”;
- C# cũng hỗ trợ các ký tự chuỗi thoát như:
Character/ Ký tự | Nghĩa |
\’ | Single quote/ ngoặc đơn |
\” | Double quote/ ngoặc kép |
\\ | Backslash/ gạch chéo ngược |
\n | Newline/ dòng mới |
\r | Carriage return/ quay ngược |
\t | Horizontal Tab/ tab ngang |
\a | Alert/ cảnh báo |
\b | Backspace/ phím cách |