Biến và kiểu dữ liệu trong C#
- 13-11-2023
- Toanngo92
- 0 Comments
Bài học này mô tả về biến, kiểu dữ liệu, nhận xét XML và cách nhập và hiển thị dữ liệu trong ngôn ngữ lập trình C#. Biến cho phép bạn lưu trữ giá trị và sử dụng chúng trong chương trình. C# cung cấp nhiều kiểu dữ liệu để khai báo biến và lưu trữ dữ liệu. Visual Studio IDE tạo nhận xét XML bằng cách trích xuất nhận xét có cấu trúc và được đánh dấu đặc biệt từ mã nguồn, sau đó tự động xây dựng chúng thành tệp XML. C# cung cấp các phương thức ReadLine() và WriteLine() để nhập và hiển thị dữ liệu.
Trong bài học này, bạn sẽ học cách:
- Định nghĩa và mô tả biến và kiểu dữ liệu trong C#.
- Giải thích nhận xét và tài liệu XML.
- Định nghĩa và mô tả hằng số và chuỗi.
- Liệt kê các từ khóa và chuỗi thoát.
- Giải thích đầu vào và đầu ra.
Mục lục
Biến và Kiểu Dữ Liệu trong C#
Biến được sử dụng để lưu trữ dữ liệu trong một chương trình và được khai báo với một kiểu dữ liệu tương ứng. Một biến có tên và có thể chứa một giá trị. Kiểu dữ liệu xác định loại dữ liệu có thể được lưu trữ trong một biến.
Định nghĩa
Một biến là một thực thể có giá trị có thể thay đổi trong quá trình thực hiện một chương trình. Ví dụ, tuổi của một sinh viên, địa chỉ của một thành viên giáo viên và lương của một nhân viên là các ví dụ về các thực thể có thể được biểu diễn bằng biến.
Trong C#, tương tự như các ngôn ngữ lập trình khác, một biến là một vị trí trong bộ nhớ máy tính được xác định bằng một tên duy nhất và được sử dụng để lưu trữ một giá trị. Tên của biến được sử dụng để truy cập và đọc giá trị được lưu trữ trong đó. Ví dụ, bạn có thể tạo một biến có tên là empName để lưu trữ tên của một nhân viên.
Các loại dữ liệu khác nhau như ký tự, số nguyên hoặc chuỗi có thể được lưu trữ trong các biến. Dựa vào loại dữ liệu mà phải được lưu trữ trong một biến, các biến có thể được gán các loại dữ liệu khác nhau.
Sử Dụng Biến
Trong C#, bộ nhớ được cấp phát cho một biến tại thời điểm tạo nó. Trong quá trình tạo, biến được đặt tên để duy nhất xác định biến trong phạm vi của nó. Ví dụ, bạn có thể tạo một biến có tên là empName
để lưu trữ tên của một nhân viên.
Bạn có thể khởi tạo một biến tại thời điểm tạo biến hoặc sau một thời gian sau đó. Một khi đã khởi tạo, giá trị của một biến có thể thay đổi theo yêu cầu.
Trong C#, biến giúp bạn theo dõi dữ liệu được sử dụng trong một chương trình. Khi đề cập đến một biến, bạn thực sự đang đề cập đến giá trị được lưu trữ trong biến đó.
Hình bên dưới minh họa khái niệm về biến.
Cú pháp sau được sử dụng để khai báo biến trong C#:
Cú pháp:
<datatype> <variableName>
trong đó:
<datatype>
: Là một kiểu dữ liệu hợp lệ trong C#.<variableName>
: Là một tên biến hợp lệ.
Cú pháp sau được sử dụng để khởi tạo biến trong C#:
<variableName> = <value>;
trong đó:
=
: Là toán tử gán được sử dụng để gán giá trị.<value>
: Là dữ liệu được lưu trữ trong biến.
Đoạn mã bên dưới khai báo hai biến, tên là empNumber
và empName
.
int empNumber;
string empName;
Đoạn mã trên khai báo một biến số nguyên, empNumber
và một biến string variable empName
. Bộ nhớ được cấp phát để lưu trữ dữ liệu trong mỗi biến.
Giá trị có thể được gán cho biến bằng cách sử dụng toán tử gán (=), như sau:
empNumber = 100;
empName = "David Blake";
Bạn cũng có thể gán một giá trị cho biến khi khởi tạo, như sau:
int empNumber = 100;
Kiểu Dữ Liệu
Bạn có thể lưu trữ các loại giá trị khác nhau như số, ký tự hoặc chuỗi trong các biến khác nhau. Trình biên dịch phải biết biến cụ thể nào được mong đợi lưu trữ loại dữ liệu nào. Để xác định kiểu dữ liệu có thể được lưu trữ trong một biến, C# cung cấp các kiểu dữ liệu khác nhau.
Khi một biến được khai báo, một kiểu dữ liệu được gán cho biến đó. Điều này cho phép biến lưu trữ giá trị của kiểu dữ liệu đã gán. Trong ngôn ngữ lập trình C#, kiểu dữ liệu được chia thành hai loại:
- Kiểu Dữ Liệu Giá Trị (Value Types)
Biến của kiểu dữ liệu giá trị lưu trữ các giá trị thực tế. Những giá trị này được lưu trữ trong một ngăn xếp. Lưu trữ ngăn xếp dẫn đến việc cấp phát bộ nhớ nhanh chóng cho biến của kiểu dữ liệu giá trị. Các giá trị có thể là của một kiểu dữ liệu có sẵn hoặc một kiểu dữ liệu do người dùng định nghĩa. Hầu hết các kiểu dữ liệu có sẵn là kiểu dữ liệu giá trị. Các kiểu dữ liệu giá trị có sẵn bao gồm int
, float
, double
, char
và bool
. Kiểu dữ liệu giá trị do người dùng định nghĩa được tạo bằng cách sử dụng từ khóa struct
và enum
. Người lập trình sử dụng từ khóa struct
để tạo các kiểu dữ liệu giá trị tùy chỉnh giữ một tập nhỏ các biến liên quan. Từ khóa enum
được sử dụng để tạo các kiểu dữ liệu giá trị tùy chỉnh định nghĩa một tập hợp các hằng số nguyên có tên.
- Kiểu Dữ Liệu Tham Chiếu (Reference Types)
Biến của kiểu dữ liệu tham chiếu lưu trữ địa chỉ bộ nhớ của các biến khác trong một heap.
Giá trị này có thể thuộc về một kiểu dữ liệu có sẵn hoặc một kiểu dữ liệu do người dùng định nghĩa. Ví dụ, một kiểu dữ liệu string
có sẵn có thể là một kiểu dữ liệu tham chiếu. Hầu hết các kiểu dữ liệu do người dùng định nghĩa như một lớp (class
) đều là kiểu dữ liệu tham chiếu.
Hình bên dưới hiển thị các kiểu dữ liệu.
Kiểu Dữ Liệu Được Xác Định Trước
Các kiểu dữ liệu được xác định trước được gọi là các kiểu dữ liệu cơ bản trong C#. Các kiểu dữ liệu này có một phạm vi và kích thước được xác định trước. Kích thước của kiểu dữ liệu giúp trình biên dịch cấp phát không gian bộ nhớ và phạm vi giúp trình biên dịch đảm bảo rằng giá trị được gán nằm trong phạm vi của kiểu dữ liệu của biến.
Bảng bên dưới tóm tắt các kiểu dữ liệu được xác định trước trong C#. 13123123123
Kiểu dữ liệu | Kích thước | Độ rộng |
byte | Số nguyên 8-bit không dấu | 0 đến 255 |
sbyte | Số nguyên 8-bit có dấu | -128 đến 127 |
short | Số nguyên 16-bit có dấu | -32,768 đến 32,767 |
ushort | Số nguyên 16-bit không dấu | 0 đến 65,535 |
int | Số nguyên 32-bit có dấu | -2,147,483,648 đến 2,147,483,647 |
uint | Số nguyên 32-bit không dấu | 0 đến 4,294,967,295 |
long | Số nguyên 64-bit có dấu | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 |
ulong | Số nguyên 64-bit không dấu | 0 đến 18,446,744,073,709,551,615 |
float | Dấu chấm động 32-bit với độ chính xác 7 chữ số | ±1,5e-45 đến ±3,4e38 |
double | Dấu chấm động 64-bit với độ chính xác 15-16 chữ số | ±5.0e-324 đến ±1.7e308 |
decimal | Dấu chấm động 128-bit với độ chính xác 28-29 chữ số | ±1.0 x 10e-28 đến ±7.9 x 10e28 |
char | Ký tự Unicode 16-bit | U+0000 to U+ffff |
bool | Lưu trữ giá trị đúng hoặc sai | true or false |
Lưu ý:
- Ký Tự Unicode
Unicode là một bộ ký tự 16-bit chứa tất cả các ký tự thường được sử dụng trong xử lý thông tin. Đây là một nỗ lực để hợp nhất bảng chữ cái và hình vẽ chữ của các ngôn ngữ trên thế giới thành một bảng ký tự quốc tế duy nhất.
Các ký tự Unicode được biểu diễn dưới dạng ký tự 16-bit và được sử dụng để biểu diễn nhiều ngôn ngữ được nói trên khắp thế giới. Kiểu dữ liệu char
sử dụng ký tự Unicode và chúng thường được tiền tố bởi chữ cái ‘U’.
- Số Nguyên Có Dấu
Số nguyên có dấu có thể biểu diễn cả số dương và số âm.
- Biểu Diễn Kiểu Dữ Liệu Float và Char
Giá trị của biến kiểu float
luôn phải kết thúc bằng chữ cái ‘F’ hoặc ‘f’. Giá trị của kiểu dữ liệu char
phải luôn được bao quanh bởi dấu nháy đơn (‘).
Phân loại
Loại dữ liệu tham chiếu lưu trữ địa chỉ bộ nhớ của các biến khác. Những biến khác này giữ các giá trị thực tế. Loại tham chiếu có thể được phân loại thành các loại sau:
- Object
Object
là một loại dữ liệu tham chiếu tích hợp sẵn. Nó là một lớp cơ sở cho tất cả các loại dữ liệu được định nghĩa trước và dữ liệu do người dùng định nghĩa. Một lớp là một cấu trúc logic đại diện cho một thực thể trong thế giới thực. Điều này có nghĩa là các loại dữ liệu được định nghĩa trước và dữ liệu do người dùng định nghĩa được tạo dựa trên lớp Object
.
- String
String
là một loại dữ liệu tham chiếu tích hợp sẵn. Loại dữ liệu String
biểu thị các giá trị chuỗi ký tự Unicode. Nó cho phép bạn gán và thao tác các giá trị chuỗi. Một khi chuỗi được tạo, chúng không thể được sửa đổi.
- Class
Một lớp là một cấu trúc do người dùng định nghĩa, chứa các biến và phương thức. Ví dụ, lớp Employee
có thể là một cấu trúc do người dùng định nghĩa, có thể chứa các biến như empSalary
, empName
và empAddress
. Ngoài ra, nó có thể chứa các phương thức như CalculateSalary()
, trả về lương ròng của một nhân viên.
- Delegate
Delegate là một loại dữ liệu tham chiếu do người dùng định nghĩa, lưu trữ địa chỉ của một hoặc nhiều phương thức.
- Interface
Một giao diện là một cấu trúc do người dùng định nghĩa, nhóm các chức năng liên quan có thể thuộc về bất kỳ lớp hoặc cấu trúc nào.
- Mảng
Một mảng là một cấu trúc dữ liệu do người dùng định nghĩa, chứa các giá trị cùng loại dữ liệu, như điểm số của sinh viên.
Quy tắc
Biến phải được khai báo trước khi có thể được tham chiếu. Bạn phải tuân theo một số quy tắc khi khai báo một biến:
- Tên biến có thể bắt đầu bằng một chữ cái in hoa hoặc thường. Tên có thể chứa chữ cái, số và ký tự gạch dưới (_).
- Ký tự đầu tiên của tên biến phải là một chữ cái và không phải là một số. Gạch dưới cũng là một ký tự hợp lệ ở vị trí đầu tiên, nhưng không được khuyến khích ở đầu tên.
- C# là ngôn ngữ phân biệt chữ hoa và chữ thường; do đó, tên biến Count và count đều đại diện cho hai biến khác nhau.
- Từ khóa không thể được sử dụng làm tên biến. Nếu bạn vẫn cần sử dụng một từ khóa C#, hãy thêm ký tự ‘@’ đằng trước.
Luôn nên đặt tên biến có ý nghĩa sao cho tên biểu thị ý nghĩa về nội dung được lưu trữ trong biến.
Lưu ý: Microsoft khuyến khích sử dụng ký hiệu camel case cho tên biến trong C#. Bạn không nên sử dụng gạch dưới và phải đảm bảo rằng chữ cái đầu tiên của tên biến là chữ thường. Ngoài ra, bạn phải viết hoa chữ cái đầu tiên của mỗi từ tiếp theo trong tên biến. Ví dụ, xem khai báo biến sau:
int totMonths = 12;
string empName = "John Fernandes";
bool statusInfo = true;
Tính hợp lệ
Kiểu và tên biến (định danh) của một biến phải được nêu rõ khi khai báo.
Điều này thông báo cho trình biên dịch về tên của biến và loại dữ liệu mà biến sẽ lưu trữ. Nếu bạn cố gắng sử dụng một biến chưa được khai báo, trình biên dịch sẽ tạo ra một thông báo lỗi.
Bảng bên dưới hiển thị danh sách các tên biến hợp lệ và không hợp lệ trong C#.
Tên biến | Hợp lệ/ Không hợp lệ |
Employee | Hợp lệ |
student | Hợp lệ |
_Name | Hợp lệ |
Emp_Name | Hợp lệ |
@goto | Hợp lệ |
static | Không hợp lệ vì nó là một từ khóa |
4myclass | Không hợp lệ vì một biến không thể bắt đầu bằng một chữ số |
Student&Faculty | Không hợp lệ vì một biến không thể chứa ký tự đặc biệt ‘&’ |
Lưu ý: Khi bạn khai báo một biến, máy tính sẽ cấp phát bộ nhớ cho nó. Do đó, để tránh lãng phí bộ nhớ máy tính, nên khai báo biến chỉ khi cần thiết.
Khai báo
Trong C#, bạn có thể khai báo nhiều biến cùng một lúc theo cách tương tự khi bạn khai báo một biến đơn. Sau khi khai báo biến, bạn phải gán giá trị cho chúng. Việc gán giá trị cho một biến được gọi là khởi tạo. Bạn có thể gán giá trị cho một biến khi bạn khai báo nó hoặc sau đó.
Dưới đây là cú pháp để khai báo và khởi tạo một biến đơn:
<data type> <variable name> =. <value>
trong đó,
<data type>
: Là một loại dữ liệu biến hợp lệ.
<variable name>
: Là một tên biến hoặc định danh biến hợp lệ.
<value>
: Là giá trị được gán cho biến.
Dưới đây là cú pháp để khai báo nhiều biến:
<data type> <variable name1> <variable name2>...<variable nameN>:
trong đó,
<data type>
: Là một loại dữ liệu biến hợp lệ.
<variable name1>
<variable name2>
…<variable nameN>
: Là các tên biến hợp lệ hoặc định danh biến.
Dưới đây là cú pháp để khai báo và khởi tạo nhiều biến:
<data type> <variable name1> = <value1>, <data type> <variable name2> = <value2>;
Đoạn mã bên dưới mô tả cách khai báo và khởi tạo biến trong C#.
bool boolTest = true;
short byteTest = 19;
int intTest;
string stringTest = "David";
float floatTest = 14.5f;
int Test = 140000;
floatTest = 14.5f;
Console.WriteLine("boolTest = {0}", boolTest);
Console.WriteLine("byteTest = " + byteTest);
Console.WriteLine("intTest = " + intTest);
Console.WriteLine("stringTest = " + stringTest);
Console.WriteLine("floatTest = " + floatTest);
Trong đoạn mã trên, các biến kiểu bool
, byte
, int
, string
và float
được khai báo. Giá trị được gán cho mỗi biến này và được hiển thị bằng phương thức Console.WriteLine()
của lớp Console
.
Hình bên dưới hiển thị kết quả đầu ra.
Biến Kiểu Ngầm Định
Khi bạn khai báo và khởi tạo một biến trong một bước, bạn có thể sử dụng từ khóa var
thay vì khai báo kiểu. Biến được khai báo bằng từ khóa var
được gọi là biến kiểu ngầm định.
Đối với các biến kiểu ngầm định, trình biên dịch suy luận kiểu của biến từ biểu thức khởi tạo. Đoạn mã bên dưới mô tả cách khai báo và khởi tạo biến kiểu ngầm định trong C#.
var boolTest = true;
var byteTest = 19;
var intTest = 140000;
var stringTest = "David";
var floatTest = 14.5f;
Console.WriteLine("boolTest = {0}", boolTest);
Console.WriteLine("byteTest = " + byteTest);
Console.WriteLine("intTest = " + intTest);
Console.WriteLine("stringTest = " + stringTest);
Console.WriteLine("floatTest = " + floatTest);
Trong Đoạn mã trên, bốn biến kiểu ngầm định được khai báo và khởi tạo với giá trị. Giá trị của mỗi biến được hiển thị bằng phương thức Console.WriteLine()
của lớp Console
.
Hình bên dưới hiển thị kết quả.
Lưu ý: Bạn phải khai báo và khởi tạo biến kiểu ngầm định cùng một lúc. Không làm điều này sẽ dẫn đến trình biên dịch báo lỗi.
Bình Luận và Tài Liệu XML
Bình luận giúp đọc mã của một chương trình để hiểu về chức năng của chương trình. C# hỗ trợ ba loại bình luận: bình luận trên một dòng, bình luận trên nhiều dòng và bình luận XML.
Định nghĩa
Trong C#, các bình luận được lập trình viên sử dụng để cung cấp thông tin về một đoạn mã. Bình luận làm cho chương trình dễ đọc hơn. Chúng giúp lập trình viên giải thích mục đích sử dụng một biến hoặc phương thức cụ thể. Trong khi chương trình được thực thi, trình biên dịch có thể nhận diện các bình luận vì chúng được đánh dấu bằng các ký tự đặc biệt. Trình biên dịch bỏ qua các bình luận trong quá trình thực thi chương trình.
C# hỗ trợ ba loại bình luận, bao gồm:
- Bình Luận Trên Một Dòng
Bình luận trên một dòng bắt đầu bằng hai dấu gạch chéo (//). Bạn có thể chèn bình luận trên một dòng như đã thể hiện trong đoạn mã bên dưới.
// Đoạn mã này sẽ cộng hai số.
int doSum = 4 + 3;
// Để viết nhiều hơn một dòng bình luận, hãy bắt đầu mỗi dòng với dấu gạch chéo gạch chéo (//) như
// được hiển thị trong đoạn mã sau.
// Đoạn mã này sẽ cộng hai số và sau đó đặt kết quả vào biến doSum.
int doSum = 4 + 3;
Bạn cũng có thể viết bình luận trên một dòng trong cùng một dòng như thể hiện trong đoạn mã sau:
int doSum = 4 + 3; // Cộng hai số.
- Bình Luận Trên Nhiều Dòng
Bình luận trên nhiều dòng bắt đầu bằng dấu gạch chéo theo sau là một dấu hoa thị (/*) và kết thúc bằng một hoa thị tiếp theo sau là một dấu gạch chéo (*/). Giữa các ký tự bắt đầu và kết thúc này, bạn có thể chèn nhiều dòng bình luận.
Bạn có thể chèn bình luận trên nhiều dòng như đã thể hiện trong Đoạn mã bên dưới.
/*
Đây là một đoạn mã nhân hai số
và chia giá trị kết quả cho 2,
sau đó hiển thị phần thương
*/
int doMult = 5 * 20;
int doDiv = doMult / 2;
Console.WriteLine(“Phần thương là: ” + doDiv);
- Bình Luận XML
Bình luận XML bắt đầu bằng ba dấu gạch chéo (///). Khác với bình luận trên một dòng và trên nhiều dòng, bình luận XML phải được bao quanh bằng một thẻ XML. Bạn phải tạo thẻ XML để chèn bình luận XML. Cả thẻ XML và bình luận XML đều phải có tiền tố là ba dấu gạch chéo.
Bạn có thể chèn một bình luận XML như thể hiện trong Đoạn mã bên dưới.
/// <summary>
/// You are in the XML tag called summary.
/// </summary>
Đoạn code bên dưới hiển thị một ví dụ đầy đủ về việc sử dụng bình luận XML.
class Comments
{
/// <summary>
/// The following is an XML Comment
/// </summary>
// The following is a single line comment
// Main method begins here
static void Main(string[] args)
{
/*
This is a multiline comment.
The WriteLine method is used to
print the specified value.
The following statement
uses the WriteLine method.
*/
Console.WriteLine("C#");
}
}
// End of class
Lưu ý: Khi bạn nhấn phím <Enter> sau các ký tự mở đầu ‘/*‘ trong một bình luận nhiều dòng, một ký tự ‘*’ sẽ xuất hiện ở đầu dòng mới. Ký tự này chỉ ra rằng một dòng mới đã được chèn vào trong bình luận. Khi bình luận nhiều dòng được đóng, IDE Visual Studio sẽ thay đổi tất cả các văn bản chứa trong bình luận thành văn bản BOLD. Điều này sẽ làm nổi bật văn bản được viết như một bình luận.
Trong C#, bình luận còn được biết đến là “remarks”.
Tài Liệu XML
Trong C#, bạn có thể tạo một tài liệu XML sẽ chứa tất cả các bình luận XML. Tài liệu này hữu ích khi nhiều lập trình viên muốn xem thông tin về chương trình. Ví dụ, giả sử một trong những lập trình viên muốn hiểu chi tiết kỹ thuật của mã và một lập trình viên khác muốn xem tổng số biến được sử dụng trong mã. Trong trường hợp này, bạn có thể tạo một tài liệu XML sẽ chứa tất cả thông tin cần thiết. Để tạo một tài liệu XML, bạn phải sử dụng cửa sổ Lệnh Visual Studio 2017.
Hình bên dưới hiển thị các bình luận XML có thể được trích xuất thành một tệp XML.
Cú pháp sau được sử dụng để tạo một tài liệu XML từ tệp nguồn C#:
csc /doc: <XMLfilename.xml><CSharpfilename.cs>
trong đó,
<XMLfilename.xml>
: Là tên của tệp XML sẽ được tạo ra.
<CSharpfilename.cs>
: Là tên của tệp C# từ đó các bình luận XML sẽ được trích xuất.
Các Thẻ XML Được Định Sẵn
Bình luận XML được chèn trong các thẻ XML. Các thẻ này có thể là thẻ được định sẵn hoặc được người dùng định nghĩa. Bảng bên dưới liệt kê các thẻ XML được định sẵn phổ biến và mô tả cách sử dụng thông thường của chúng.
Thẻ XML | Mô Tả |
<c> | Đặt văn bản trong một kiểu font giống như mã nguồn. |
<code> | Đặt một hoặc nhiều dòng mã nguồn hoặc đầu ra của chương trình. |
<example> | Chỉ định một ví dụ. |
<param> | Mô tả một tham số cho một phương thức hoặc một hàm tạo. |
<returns> | Chỉ định giá trị trả về của một phương thức. |
<summary> | Tóm tắt thông tin chung về mã nguồn. |
<exception> | Tài liệu một lớp ngoại lệ. |
<include> | Tham chiếu đến các bình luận trong một tệp khác bằng cú pháp XPath, mô tả các loại và thành viên trong mã nguồn. |
<list> | Chèn một danh sách vào tệp tài liệu. |
<para> | Chèn một đoạn văn bản vào tệp tài liệu. |
<paramref> | Chỉ định rằng một từ là một tham số. |
<permission> | Documents access permissions. |
<remarks> | Chỉ định thông tin tổng quan về loại (type). |
<see> | Chỉ định một liên kết. |
<seealso> | Chỉ định văn bản có thể cần xuất hiện trong phần Xem Thêm. |
<value> | Mô tả một thuộc tính. |
Hình bên dưới hiển thị một ví dụ về các thẻ XML được định sẵn.
Đoạn mã dưới đây thể hiện việc sử dụng các bình luận XML.
using System;
/// <summary>
/// The program demonstrates the use of XML comments.
/// </summary>
class Employee
{
/// <summary>
/// Integer field to store employee ID.
/// </summary>
private int _id;
/// <summary>
/// String field to store employee name.
/// </summary>
private string _name;
/// <summary>
/// This constructor initializes the ID and name to -1 and null.
/// </summary>
/// <remarks>
/// This program uses both parameterized and non-parameterized constructors.
/// </remarks>
public Employee()
{
_id = -1;
_name = null;
}
/// <summary>
/// This constructor initializes the ID and name.
/// </summary>
/// <param name="id">Employee ID</param>
/// <param name="name">Employee Name</param>
public Employee(int id, string name)
{
this._id = id;
this._name = name;
}
/// <summary>
/// The entry point for the application.
/// </summary>
/// <param name="args">A List of command-line arguments</param>
static void Main(string[] args)
{
// Creating an object of Employee class and displaying the
// ID and name of the employee
Employee objEmp = new Employee(101, "David Smith");
Console.WriteLine("Employee ID: {0} \nEmployee Name: {1}", objEmp._id, objEmp._name);
}
}
Hình bên dưới hiển thị tài liệu XML.
Trong ví dụ này, các thẻ tài liệu XML như <remarks>
, <seealso>
, và <paramref>
được sử dụng. Thẻ <remarks>
được sử dụng để cung cấp thông tin về một lớp cụ thể. Thẻ <seealso>
được sử dụng để chỉ định văn bản sẽ xuất hiện trong phần Xem Thêm. Thẻ <paramref>
được sử dụng để chỉ định rằng từ được chỉ định là một tham số.
Hằng và Hằng số
Một hằng số có một giá trị cố định và không thay đổi suốt chương trình trong khi một giá trị cố định cung cấp một phương tiện để biểu diễn các giá trị cụ thể trong một chương trình.
Sự Cần Thiết của Hằng
Hãy xem xét một đoạn mã tính diện tích của hình tròn. Để tính diện tích của hình tròn, giá trị của pi và bán kính phải được cung cấp trong công thức. Giá trị của pi là một hằng số. Giá trị này sẽ không thay đổi bất kể giá trị của bán kính được cung cấp.
Tương tự, hằng số trong C# là các giá trị cố định được gán cho các định danh và không thay đổi suốt quá trình thực thi của mã nguồn. Chúng được định nghĩa khi bạn muốn bảo toàn giá trị để sử dụng lại sau này hoặc để ngăn chặn bất kỳ sửa đổi nào cho các giá trị đó.
Hằng số
Trong C#, bạn có thể khai báo hằng số cho tất cả các kiểu dữ liệu. Bạn phải khởi tạo hằng số khi khai báo nó. Hằng số được khai báo cho các loại dữ liệu giá trị thay vì cho các loại dữ liệu tham chiếu. Để khai báo một định danh là hằng số, từ khóa const
được sử dụng trong khai báo định danh. Trình biên dịch có thể xác định hằng số vào thời điểm biên dịch vì từ khóa const
.
Cú pháp sau được sử dụng để khởi tạo một hằng số:
const <data type> <identifier> = <value>;
Ở đây,
const
: Từ khóa chỉ định rằng định danh được khai báo là hằng số.data type
: Kiểu dữ liệu của hằng số.identifier name
: Tên của định danh sẽ giữ hằng số.value
: Giá trị cố định không thay đổi suốt quá trình thực thi của mã nguồn.
Đoạn mã dưới đây khai báo một hằng số, pi, và một biến, radius, để tính diện tích của hình tròn.
const float pi = 3.14F;
float radius = 5;
float area = pi * radius * radius;
Console.WriteLine("Diện tích của hình tròn là " + area);
Trong đoạn mã này, một hằng số được đặt tên là pi được gán giá trị là 3.14, đây là một giá trị cố định. Biến radius lưu trữ bán kính của hình tròn. Mã tính diện tích của hình tròn và hiển thị nó như là đầu ra.
Sử Dụng Giá Trị Cố Định
Một giá trị cố định là một giá trị tĩnh được gán cho biến và hằng số. Bạn có thể định nghĩa giá trị cố định cho bất kỳ kiểu dữ liệu nào.
Hậu tố cho Giá Trị Số
Giá trị số có thể có một hậu tố là một chữ cái để chỉ định kiểu dữ liệu của giá trị số. Chữ cái này có thể ở dạng chữ hoa hoặc chữ thường. Ví dụ, trong khai báo sau, string bookName
= “Csharp
“, chuỗi Csharp
là một giá trị cố định được gán cho biến bookName
kiểu string
.
string bookName = "Csharp";
Trong C#, có sáu loại giá trị cố định. Dưới đây là mô tả của chúng:
- Boolean Literal
Giá trị cố định boolean có hai giá trị, true hoặc false. Ví dụ:
bool val = true;
Ở đây, true
là giá trị cố định boolean được gán cho biến val
.
- Integer Literal
Giá trị số nguyên có thể được gán cho các kiểu dữ liệu int
, uint
, long
, hoặc ulong
. Hậu tố cho giá trị số nguyên bao gồm U, L, UL, hoặc LU. U đại diện cho uint
hoặc ulong
, L đại diện cho long
. UL và LU đại diện cho ulong
. Ví dụ:
longval = 53L;
Ở đây, 53L
là giá trị số nguyên được gán cho biến val
.
- Real Literal
Giá trị số thực được gán cho các kiểu dữ liệu float
, double
(default
), và decimal
. Điều này được chỉ định bằng chữ cái hậu tố xuất hiện sau giá trị đã gán. Giá trị số thực có thể có hậu tố F, D, hoặc M. F đại diện cho float
, D đại diện cho double
, và M đại diện cho decimal
. Ví dụ:
float val = 1.66F;
Ở đây, 1.66F
là giá trị số thực được gán cho biến val
.
- Character Literal
Giá trị ký tự được gán cho kiểu dữ liệu char
. Giá trị ký tự luôn được đặt trong dấu nháy đơn. Ví dụ:
char val = 'A';
Ở đây, ‘A
‘ là giá trị ký tự được gán cho biến val
.
- String Literal
Trong C#, có hai loại giá trị chuỗi, là chuỗi thông thường (regular) và chuỗi định dạng (verbatim). Một giá trị chuỗi thông thường là một chuỗi tiêu chuẩn. Một giá trị chuỗi định dạng giống như một giá trị chuỗi thông thường nhưng được tiền tố bằng ký tự ‘@’. Một giá trị chuỗi luôn được đặt trong dấu nháy đôi. Ví dụ:
string emailDomain = "@gmail.com";
Ở đây, @gmail.com
là một giá trị chuỗi định dạng.
- Null Literal
Giá trị null
chỉ có một giá trị, là null
. Ví dụ:
string email = null;
Ở đây, null
chỉ ra rằng biến email không tham chiếu đến bất kỳ đối tượng nào (tham chiếu).
Lưu ý: Nếu bạn gán giá trị số có hậu tố để chỉ định kiểu của chúng, các hậu tố này không phải là một phần của giá trị cố định và không được hiển thị trong đầu ra mã nguồn.
Từ Khóa và Dãy Escape
Từ khóa là một trong những từ được dự trữ có ý nghĩa được định nghĩa trước trong ngôn ngữ. Các ký tự dãy escape trong C# là các ký tự đi trước bởi dấu gạch chéo (\) và biểu thị ý nghĩa đặc biệt đối với trình biên dịch.
Từ Khóa
Từ khóa là những từ dự trữ và được biên dịch riêng lẻ bởi trình biên dịch. Chúng mang lại ý nghĩa được định nghĩa trước cho trình biên dịch và do đó, không thể tạo hoặc sửa đổi. Ví dụ, int
là một từ khóa chỉ định rằng biến là kiểu số nguyên. Bạn không thể sử dụng từ khóa như tên biến, tên phương thức, hoặc tên lớp, trừ khi bạn tiền tố từ khóa đó bằng ký tự ‘@’.
Bảng bên dưới liệt kê các từ khóa được sử dụng trong C#.
abstract | as | base | bool | break | byte | case catch |
char | checked | class | const | continue | ||
decimal | default | delegate | do | double | else | enum |
event | explicit | Extern | false | finally | fixed | float |
for | foreach | goto | if | implicitin | int | interface |
internal | is | lock | long | namespace | new | null |
object | operator | out | override | params | private | protected |
public | readonly | ref | return | sbyte | sealed | short |
sizeof | stackalloc | static | string | struct | switch | this |
throw | true | try | typeof | uint | ulong | unchecked |
unsafe | ushort | using | virtual | void | volatile | while |
C# cung cấp từ khóa ngữ cảnh (contextual keywords) có ý nghĩa đặc biệt trong ngữ cảnh của mã nguồn nơi chúng được sử dụng. Các từ khóa ngữ cảnh không được dự trữ và có thể sử dụng như là các định danh bên ngoài ngữ cảnh của mã nguồn. Khi từ khóa mới được thêm vào C#, chúng được thêm vào như là từ khóa ngữ cảnh.
Bảng bên dưới liệt kê các từ khóa ngữ cảnh được sử dụng trong C#.
add | alias | ascending | async | await | descending yield | dynamic from |
from | get | global | group | into | join | let |
orderby | partial | remove | select | set | value | var |
where |
Sự Cần Thiết của Ký Tự Dãy Escape
Hãy xem xét một hệ thống tính lương của một tổ chức. Một trong những chức năng của nó là hiển thị lương hàng tháng như đầu ra với lương được hiển thị trên dòng tiếp theo. Người lập trình muốn viết mã nguồn sao cho lương luôn được in ra dòng tiếp theo không phụ thuộc vào độ dài của chuỗi được hiển thị với số tiền lương. Điều này được thực hiện bằng cách sử dụng các dãy escape.
Định Nghĩa
Ký tự dãy escape là một ký tự đặc biệt được tiền tố bởi dấu gạch chéo (\). Các ký tự dãy escape được sử dụng để triển khai các ký tự đặc biệt không in được như một dòng mới, một khoảng trắng đơn, hoặc một ký tự backspace. Những ký tự không in này được sử dụng khi hiển thị đầu ra được định dạng cho người dùng để tối đa hóa tính đọc.
Dấu gạch chéo cho trình biên dịch biết rằng ký tự theo sau đó chỉ định một ký tự không in. Ví dụ, \n được sử dụng để chèn một dòng mới tương tự như phím Enter.
Ký Tự Dãy Escape trong C#
Trong C#, các ký tự dãy escape luôn phải được đặt trong dấu ngoặc kép.
Bảng bên dưới hiển thị các ký tự dãy escape và các ký tự không in tương ứng của chúng trong C#.
Ký tự dãy escape | Ký tự không in |
\' | Ký tự mở đơn, cần thiết cho các ký tự chữ cái đơn. |
\'' | Ký tự mở đôi, cần thiết cho các ký tự chuỗi. |
\\ | Backslash, required for string literal. |
\0 | Ký tự Unicode 0. |
\a | Ký tự cảnh báo (Alert). |
\b | Ký tự xóa lùi (Backspace). |
\f | Ký tự đưa trang (Form feed). |
\n | Ký tự xuống dòng (New line). |
\r | Ký tự trả về (Carriage return). |
\t | Ký tự tab ngang (Horizontal tab). |
\v | Ký tự tab dọc (Vertical tab). |
\? | Ký tự chấm hỏi dùng trong ký tự chữ (Literal question mark). |
\ooo | Tương đương với một ký tự ASCII bằng cách sử dụng mã ký tự bát phân có ba chữ số. |
\xhh | Tương đương với một ký tự ASCII bằng cách sử dụng biểu diễn thập lục phân (chính xác hai chữ số). Ví dụ, \x61 đại diện cho ký tự ‘a’. |
\uhhhh | Tương đương với một ký tự Unicode bằng cách sử dụng biểu diễn thập lục phân (chính xác bốn chữ số). Ví dụ, ký tự \u0020 đại diện cho một khoảng trắng. |
Đoạn mã bên dưới sử dụng Ký Tự Unicode
Console.Write("\t" + str + "\n");
string str = "\u0048\u0065\u006C\u006C\u006F";
Console.WriteLine("David\u0020\"2007\"");
Trong đoạn mã này, biến str được khai báo kiểu string và chứa các ký tự Unicode tương ứng với các chữ cái H, e, l, l, o. Phương thức sử dụng ký tự dãy escape cho tab ngang và lưu trữ các ký tự Unicode để hiển thị đầu ra, để lại một khoảng trắng tab. Ký tự dãy escape mới cho dòng được sử dụng trong chuỗi của phương thức để hiển thị đầu ra của câu lệnh tiếp theo ở dòng tiếp theo. Câu lệnh tiếp theo sử dụng phương thức WriteLine()
để hiển thị David "2007
“. Chuỗi trong phương thức chỉ định ký tự Unicode để hiển thị một khoảng trắng giữa David
và 2007
.
Đầu ra:
Hello!
David "2007"
Đoạn mã bên dưới sử dụng một số ký tự dãy Escape thông thường
using System;
class FileDemo
{
static void Main(string[] args)
{
string path = "C:\\tx";
bool found = true;
if (found)
{
Console.WriteLine("File path: " + path + "\\");
}
else
{
Console.WriteLine("File Not Found! \a");
}
}
}
Trong đoạn mã này, các dãy escape \\, \’, và \a được sử dụng. Dãy escape \\ được sử dụng để in một dấu gạch chéo ngược. Dãy escape \’ được sử dụng để in một dấu nháy đơn. Dãy escape \a được sử dụng để tạo ra một tiếng beep.
Hình ảnh bên dưới hiển thị kết quả của đoạn mã bên trên:
Đầu vào và Đầu ra
Các lập trình viên thường cần hiển thị đầu ra của một chương trình C# cho người dùng. Lập trình viên có thể sử dụng giao diện dòng lệnh để hiển thị đầu ra. Lập trình viên cũng có thể nhận đầu vào từ người dùng thông qua giao diện dòng lệnh. Những hoạt động đầu vào và đầu ra như vậy cũng được biết đến là các hoạt động console.
Các Hoạt Động Console
Các hoạt động console là các nhiệm vụ thực hiện trên giao diện dòng lệnh bằng cách sử dụng các lệnh có thể thực thi. Các hoạt động console được sử dụng trong ứng dụng phần mềm vì những hoạt động này dễ dàng được kiểm soát bởi hệ điều hành. Điều này là do các hoạt động console phụ thuộc vào thiết bị đầu vào và đầu ra của hệ thống máy tính.
Một ứng dụng console là một ứng dụng thực hiện các hoạt động tại dòng lệnh. Tất cả các ứng dụng console đều bao gồm ba luồng, đó là một chuỗi byte. Những luồng này được kết nối với các thiết bị đầu vào và đầu ra của hệ thống máy tính và chúng xử lý các hoạt động đầu vào và đầu ra. Ba luồng này bao gồm:
- Standard in (Đầu vào tiêu chuẩn): Luồng đầu vào tiêu chuẩn lấy đầu vào và chuyển nó cho ứng dụng console để xử lý.
- Standard out (Đầu ra tiêu chuẩn): Luồng đầu ra tiêu chuẩn hiển thị đầu ra trên màn hình.
- Standard err (Đầu ra lỗi tiêu chuẩn): Luồng đầu ra lỗi tiêu chuẩn hiển thị thông báo lỗi trên màn hình.
Các Phương Thức Đầu Ra
Trong C#, tất cả các hoạt động console được xử lý bởi lớp Console
thuộc namespace System
, là một bộ sưu tập các lớp có chức năng tương tự.
Để viết dữ liệu trên console, bạn cần luồng đầu ra tiêu chuẩn. Luồng này được cung cấp bởi các phương thức đầu ra của lớp Console
. Có hai phương thức đầu ra viết vào luồng đầu ra tiêu chuẩn. Chúng là:
- Console.Write(): Viết bất kỳ loại dữ liệu nào.
- Console.WriteLine(): Viết bất kỳ loại dữ liệu nào và dữ liệu này kết thúc bằng ký tự xuống dòng mới trong luồng đầu ra tiêu chuẩn.
Điều này có nghĩa là bất kỳ dữ liệu nào sau dòng này sẽ xuất hiện ở dòng mới.
Cú pháp dưới đây được sử dụng cho phương thức Console.Write(), cho phép bạn hiển thị thông tin trên cửa sổ console:
Console.Write("<data>" + variables);
Trong đó:
- <
data
>: Chỉ định chuỗi hoặc các ký tự chuỗi thoát khỏi (escape sequence characters) đặt trong dấu ngoặc kép. variables
: Chỉ định tên biến mà giá trị của nó nên được hiển thị trên console.
Cú pháp dưới đây được sử dụng cho phương thức Console.WriteLine()
, cho phép bạn hiển thị thông tin trên một dòng mới trong cửa sổ console:
Console.WriteLine("<data>" + variables);
Đoạn mã bên dưới thể hiện sự khác biệt giữa phương thức Console.Write()
và Console.WriteLine()
.
Console.WriteLine("C# is a powerful programming language");
Console.WriteLine("C# is a powerful") ;
Console.WriteLine("programming language");
Console.Write("C# is a powerful");
Console.WriteLine(" programming language");
Đầu ra:
C# is a powerful programming Language
C# is a powerful
programming language
C# is a powerful programming
Placeholders
Cả hai phương thức WriteLine()
và Write()
đều chấp nhận một danh sách các tham số để định dạng văn bản trước khi hiển thị kết quả. Tham số đầu tiên là một chuỗi chứa các định vị trong dấu ngoặc nhọn để chỉ định vị trí, nơi giá trị của các biến sẽ được thay thế.
Mỗi định vị chỉ định một chỉ số dựa trên số biến trong danh sách. Ví dụ, để chỉ định vị trí tham số đầu tiên, bạn viết {0}
, thứ hai viết {1}
, và cứ như vậy. Những số trong dấu ngoặc nhọn được gọi là các địa điểm giữ chỗ.
Đoạn mã bên dưới sử dụng các địa điểm giữ chỗ trong phương thức Console.WriteLine()
để hiển thị kết quả của phép nhân.
int number = 5;
int result = 100 * number;
Console.WriteLine("Result is {0} when 100 is multiplied by {1}", result, number);
result = 150 / number;
Console.WriteLine("Result is {0} when 150 is divided by {1}", result, number);
Đầu ra:
Result is 500 when 100 is multiplied by 5
Result is 30 when 150 is divided by 5
Ở đây, {0}
được thay thế bằng giá trị trong biến result và {1}
được thay thế bằng giá trị trong biến number.
Phương Thức Nhập (Input Methods)
Trong C#, để đọc dữ liệu, bạn cần luồng đầu vào tiêu chuẩn. Luồng này được cung cấp bởi các phương thức đầu vào của lớp Console
. Có hai phương thức đầu vào cho phép phần mềm nhận dữ liệu từ luồng đầu vào tiêu chuẩn.
Các phương thức này như sau:
- Console.Read(): Đọc một ký tự.
- Console.ReadLine(): Đọc một dòng chuỗi.
Đoạn mã bên dưới đọc tên sử dụng phương thức ReadLine()
và hiển thị tên trên cửa sổ console.
string name;
Console.Write("Enter your name: ");
name = Console.ReadLine();
Console.WriteLine("You are {0}", name);
Trong đoạn mã trên, phương thức ReadLine()
đọc tên dưới dạng một chuỗi. Chuỗi được nhập được hiển thị như là kết quả sử dụng Placeholders.
Đầu ra:
Enter your name: David Blake
You are David Blake
Đoạn mã bên dưới thể hiện việc sử dụng Placeholders trong phương thức Console.WriteLine()
.
using System;
class Loan
{
static void Main(string[] args)
{
string custName;
double loanAmount;
float interest = 0.09F;
double interestAmount = 0;
double totalAmount = 0;
Console.Write("Enter the name of the customer: ");
custName = Console.ReadLine();
Console.Write("Enter loan amount: ");
loanAmount = Convert.ToDouble(Console.ReadLine());
interestAmount = loanAmount * interest;
totalAmount = loanAmount + interestAmount;
Console.WriteLine("\nCustomer Name: {0}", custName);
Console.WriteLine("Loan amount: ${0:#,###.#0}\nInterest rate: {1:0%}\nInterest Amount: ${2:#,###.#0}", loanAmount, interest, interestAmount);
Console.WriteLine("Total amount to be paid: ${0:#,###.#0}", totalAmount);
}
}
Trong đoạn mã trên, tên và số tiền vay được nhập từ người dùng bằng cách sử dụng phương thức Console.ReadLine()
. Chi tiết được hiển thị trên cửa sổ console bằng cách sử dụng phương thức Console.WriteLine()
. Các địa điểm giữ chỗ {0}
, {1}
, và {2}
chỉ định vị trí của ba tham số lần lượt. Số 0 được chỉ định trước dấu # để đệm giá trị có một chữ số với số 0. Tùy chọn # xác định vị trí chữ số. Tùy chọn % nhân giá trị lên 100 và hiển thị giá trị cùng với dấu phần trăm.
Hình bên dưới hiển thị kết quả của đoạn mã bên trên
Các Phương Thức Chuyển Đổi (Convert Methods)
Phương thức ReadLine()
cũng có thể được sử dụng để nhận các giá trị số nguyên từ người dùng. Dữ liệu được nhận dưới dạng chuỗi và sau đó được chuyển đổi thành kiểu dữ liệu int
. C# cung cấp một lớp Convert trong không gian tên để chuyển đổi một kiểu dữ liệu cơ sở sang một kiểu dữ liệu cơ sở khác.
Lưu ý: Phương thức Convert.ToInt32()
chuyển đổi một giá trị cụ thể thành một số nguyên có dấu 32 bit tương đương. Phương thức Convert.ToDecimal()
chuyển đổi một giá trị cụ thể thành một số thập phân tương đương.
Đoạn mã bên dưới đọc tên, tuổi và lương sử dụng phương thức Console.ReadLine()
và chuyển đổi tuổi và lương thành kiểu int
và double
bằng cách sử dụng các phương thức chuyển đổi tương ứng của lớp Convert
.
string userName;
int age;
double salary;
Console.Write("Enter your name: ");
userName = Console.ReadLine();
Console.Write("Enter your age: ");
age = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the salary: ");
salary = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Name: {0}, Age: {1}, Salary: {2}", userName, age, salary);
Đầu ra:
Enter your name: David Blake
Enter your age: 34
Enter the salary: 3450.50
Name: David Blake, Age: 34, Salary: 3450.5
Các Bộ Định Dạng Số (Numeric Format Specifiers)
Bộ định dạng là các ký tự đặc biệt được sử dụng để hiển thị giá trị của biến theo một định dạng cụ thể. Ví dụ, bạn có thể hiển thị một giá trị bát phân dưới dạng thập phân bằng cách sử dụng bộ định dạng.
Trong C#, bạn có thể chuyển đổi giá trị số thành các định dạng khác nhau. Ví dụ, bạn có thể hiển thị một số lớn dưới dạng số mũ. Để chuyển đổi giá trị số bằng các bộ định dạng số, bạn nên bao đóng định dạng trong dấu ngoặc nhọn. Những dấu ngoặc nhọn này phải được bao đóng trong dấu ngoặc kép. Điều này được thực hiện trong các phương thức xuất của lớp Console
.
Dưới đây là cú pháp cho bộ định dạng số:
Console.WriteLine("{format specifier}", <variable name>);
trong đó:
- format specifier: là bộ định dạng số.
- <variable name>: là tên của biến số nguyên.
Sử Dụng Bộ Định Dạng Số
Bộ định dạng số chỉ hoạt động với dữ liệu số. Một bộ định dạng số có thể có hậu tố là các chữ số. Các chữ số chỉ định số lượng số 0 được thêm vào sau vị trí thập phân. Ví dụ, nếu bạn sử dụng một bộ định dạng như C3, ba số 0 sẽ được thêm vào sau vị trí thập phân của số đã cho.
Bảng bên dưới liệt kê một số bộ định dạng số trong C#.
Bộ Định Dạng Số | Tên Các Bộ Định Dạng | Mô Tả |
C hoặc c | Currency | Số được chuyển đổi thành một chuỗi biểu diễn một số tiền đơn vị tiền tệ. |
D hoặc d | Decimal | Số được chuyển đổi thành một chuỗi các chữ số thập phân (0-9), có tiền tố là dấu trừ nếu số là âm. Bộ chỉ số độ chính xác xác định số tối thiểu các chữ số mong muốn trong chuỗi kết quả. Định dạng này chỉ được hỗ trợ cho các kiểu dữ liệu cơ bản. |
E hoặc e | Scientific (Exponential) | Số được chuyển đổi thành một chuỗi theo định dạng ‘-d.ddd…E+ddd’ hoặc ‘-d.ddd…e+ddd’, trong đó mỗi ‘d’ đại diện cho một chữ số (0-9). |
Chuỗi Định Dạng Số Tùy Chỉnh
Chuỗi định dạng số tùy chỉnh chứa nhiều hơn một bộ chỉ số định dạng số tùy chỉnh và xác định cách dữ liệu được định dạng. Một chuỗi định dạng số tùy chỉnh được định nghĩa là bất kỳ chuỗi nào không phải là chuỗi định dạng số tiêu chuẩn.
Bảng bên liệt kê các chỉ số định dạng số tùy chỉnh và mô tả của chúng.
Bộ Chỉ Số Định Dạng | Mô Tả |
0 | Nếu giá trị đang được định dạng chứa một chữ số nơi ‘0’ xuất hiện, thì nó sẽ được sao chép vào chuỗi kết quả. |
# | Nếu giá trị đang được định dạng chứa một chữ số nơi mà ký tự ‘#’ xuất hiện, thì nó sẽ được sao chép vào chuỗi kết quả. |
. | Ký tự ‘.’ đầu tiên xác nhận vị trí của dấu phẩy thập phân. |
‘ | Ký tự ‘,’ được sử dụng như một chỉ định ngăn cách hàng nghìn và một chỉ định tỷ lệ số. |
% | Ký tự ‘% trong chuỗi định dạng nhân một số với 100 trước khi nó được định dạng. |
E0, E+0, E-0, e0, e+0,e-0 | Nếu bất kỳ chuỗi nào trong các chuỗi đã cho xuất hiện trong chuỗi định dạng và chúng là 0 được theo sau bởi ít nhất một ký tự ‘0’, thì số sẽ được định dạng bằng cách sử dụng chuẩn hóa khoa học. |
\ | Ký tự backslash “” làm cho ký tự tiếp theo trong chuỗi định dạng được hiểu là một chuỗi thoát (escape sequence). |
‘ABC’ | Các ký tự được bao quanh bởi dấu nháy đơn hoặc nháy kép sẽ được sao chép vào chuỗi kết quả. |
“ABC” | Các ký tự được bao quanh bởi dấu nháy đơn hoặc nháy kép sẽ được sao chép vào chuỗi kết quả. |
; | Ký tự ‘;’ phân tách một phần thành các số dương, số âm và số không. |
Other | Bất kỳ ký tự nào khác đều được sao chép vào chuỗi kết quả. |
Đoạn mã bên dưới thể hiện việc chuyển đổi một giá trị số bằng cách sử dụng các bộ xác định định dạng C, D và E.
int num = 456;
Console.WriteLine("{0:C}", num);
Console.WriteLine("{0:D}", num);
Console.WriteLine("{0:E}", num);
Đầu ra:
$456.00
456
4.560000E+002
Đoạn mã bên dưới trình bày cách sử dụng các công cụ xác định định dạng số tùy chỉnh.
using System;
class Program
{
static void Main(string[] args)
{
float inter = 9;
double interestAmount;
Console.WriteLine("Loan amount: ${0:#,###.00}", loanAmount);
Console.WriteLine("Interest rate: {0:0.#%}", interest);
Console.WriteLine("Total amount to be paid: ${0:#,###.00}", totalAmount);
}
}
Trong đoạn mã này, các bộ định dạng số tùy chỉnh #, %, ., và 0 được sử dụng để hiển thị thông tin vay của khách hàng theo định dạng mong muốn.
Hình bên dưới hiển thị kết quả của đoạn mã trên.
Thêm Bộ Định Dạng Số
Có một số bộ định dạng số bổ sung được mô tả trong Bảng bên dưới
Bộ định dạng | Tên | Mô Tả |
F hoặc f | Fixed-point | Số được chuyển đổi thành một chuỗi có dạng ‘-ddd.ddd.’, trong đó mỗi ‘d’ đại diện cho một chữ số (0-9). Nếu số là âm, chuỗi bắt đầu bằng dấu trừ. |
N hoặc n | Number | Số được chuyển đổi thành một chuỗi có dạng ‘-d,ddd,ddd.ddd..’, trong đó mỗi ‘d’ đại diện cho một chữ số (0-9). Nếu số là âm, chuỗi bắt đầu bằng dấu trừ. |
X hoặc x | Hexadecimal | Số được chuyển đổi thành một chuỗi của các chữ số thập lục phân. Sử dụng “X” để tạo ra “ABCDEF”, và “x” để tạo ra “abcdef”. |
Đoạn mã bên dưới thể hiện quá trình chuyển đổi giá trị số bằng cách sử dụng các bộ định dạng F, N và X.
int num = 456;
Console.WriteLine("{0:F}", num);
Console.WriteLine("{0:N}", num);
Console.WriteLine("{0:X}", num);
Kết quả:
456.00
456.00
1C8
Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
“Bộ định dạng ngày và giờ” là một ký tự đặc biệt cho phép bạn hiển thị giá trị ngày và giờ dưới dạng khác nhau. Ví dụ, bạn có thể hiển thị một ngày theo định dạng mm-dd-yyyy
và thời gian theo định dạng hh:mm
. Nếu bạn đang hiển thị thời gian GMT, bạn có thể hiển thị thời gian GMT kèm theo viết tắt GMT bằng các bộ định dạng ngày và giờ.
Các bộ định dạng ngày và giờ cho phép bạn hiển thị ngày và giờ theo định dạng 12 giờ và 24 giờ.
Lưu ý: GMT đại diện cho Greenwich Mean Time, là tiêu chuẩn được chấp nhận trên toàn cầu để hiển thị ngày và giờ.
Dưới đây là cú pháp cho bộ định dạng ngày và giờ:
Cú pháp:
Console.WriteLine("{format specifier}", <datetime object>);
Trong đó,
{format specifier}
là bộ định dạng ngày và giờ.- <
datetime object
> là đối tượng của lớp DateTime.
Sử Dụng Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
Bộ định dạng ngày và giờ tiêu chuẩn được sử dụng trong phương thức Console.WriteLine()
với đối tượng datetime. Để tạo ra đối tượng datetime, bạn phải tạo ra một đối tượng của lớp DateTime
và khởi tạo nó. Ngày và giờ đã định dạng luôn được hiển thị dưới dạng chuỗi trong cửa sổ console.
Bảng bên dưới hiển thị một số bộ định dạng ngày và giờ tiêu chuẩn trong C#.
Công cụ xác định định dạng | Tên | Mô Tả |
d | Short date | Hiển thị ngày theo mẫu ngày ngắn. Định dạng mặc định là ‘mm/dd/yy’. |
D | Long date | Hiển thị ngày theo mẫu ngày dài. Định dạng mặc định là ‘dddd, MMMM dd, yyyy’. |
f | Full date/time (short time) | Hiển thị ngày theo mẫu ngày dài và thời gian theo mẫu thời gian ngắn, được phân tách bằng một khoảng trắng. Định dạng mặc định là ‘dddd, MMMM dd, yyyy HH:mm’. |
F | Full date/time (long time) | Hiển thị ngày theo mẫu ngày dài và thời gian theo mẫu thời gian dài, được phân tách bằng một khoảng trắng. Định dạng mặc định là ‘dddd, MMMM dd, yyyy HH:mm:ss’. |
g | General date/time (short time) | Hiển thị ngày theo mẫu ngày ngắn và thời gian theo mẫu thời gian ngắn, được phân tách bằng một khoảng trắng. Định dạng mặc định là ‘MM/dd/yyyy HH:mm’. |
Đoạn mã bên dưới thể hiện quá trình chuyển đổi một ngày và thời gian cụ thể bằng cách sử dụng các bộ định dạng ngày và giờ d, D, f, F và g.
DateTime dt = DateTime.Now;
Console.WriteLine("Short date format (d): {0:d}", dt); // Returns short date (MM/DD/YYYY)
Console.WriteLine("Long date format (D): {0:D}", dt); // Returns long date (Day, Month Date, Year)
// Returns full date with time without seconds
Console.WriteLine("Full date with time without seconds (f): {0:f}", dt);
// Returns full date with time with seconds
Console.WriteLine("Full date with time with seconds (F): {0:F}", dt);
// Returns short date and short time without seconds
Console.WriteLine("Short date and short time without seconds (g): {0:g}", dt);
Kết quả:
Short date format (d): 11/14/2023
Long date format (D): Wednesday, November 14, 2023
Full date with time without seconds (f): Wednesday, November 14, 2023 10:30 AM
Full date with time with seconds (F): Wednesday, November 14, 2023 10:30:15 AM
Short date and short time without seconds (g): 11/14/2023 10:30 AM
Bổ Sung Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
Bảng bên dưới hiển thị thêm các bộ định dạng ngày và giờ tiêu chuẩn trong C#.
Công cụ xác định định dạng | Tên | Mô Tả |
G hoặc g | General date/time | Hiển thị ngày theo mẫu ngày ngắn và thời gian theo mẫu thời gian dài, được phân tách bằng một khoảng trắng. Định dạng mặc định là ‘MM/dd/yyyy HH:mm:ss’ (thời gian dài). |
m hoặc M | Month day | Chỉ hiển thị tháng và ngày của ngày. Định dạng mặc định là ‘MMMM dd’. |
t hoặc T | Short time | Hiển thị thời gian theo mẫu thời gian ngắn. Định dạng mặc định là ‘HH:mm’. |
T | Long time | Hiển thị thời gian theo mẫu thời gian dài. Định dạng mặc định là ‘HH:mm:ss’. |
y hoặc Y | Year month pattern | Chỉ hiển thị tháng và năm từ ngày. Định dạng mặc định là ‘YYYY MMMM’. |
Đoạn mã bên dưới thể hiện việc chuyển đổi ngày và giờ được chỉ định bằng cách sử dụng ngày G, m, t, T, y và chỉ định định dạng thời gian.
DateTime dt = DateTime.Now;
// Returns short date and short time with seconds
Console.WriteLine("Short date and short time with seconds (G): {0:G}", dt);
// Returns month and day - M can also be used
Console.WriteLine("Month and day (m): {0:m}", dt);
// Returns short time
Console.WriteLine("Short time (t): {0:t}", dt);
// Returns short time with seconds
Console.WriteLine("Short time with seconds (T): {0:T}", dt);
// Returns year and month - Y also can be used
Console.WriteLine("Year and Month (y): {0:y}", dt);
Kết quả:
Short date and short time with seconds (G): 11/14/2023 1:30:45 PM
Month and day (m): 11/14
Short time (t): 1:30 PM
Short time with seconds (T): 1:30:45 PM
Year and Month (y): November, 2023
Chuỗi Định Dạng DateTime Tùy Chỉnh
Bất kỳ chuỗi định dạng DateTime không chuẩn nào được gọi là chuỗi định dạng DateTime tùy chỉnh. Chuỗi định dạng DateTime tùy chỉnh bao gồm nhiều hơn một bộ định dạng DateTime tùy chỉnh. Bảng bên dưới liệt kê một số bộ định dạng DateTime tùy chỉnh.
Bộ Định Dạng | Mô Tả |
ddd | Biểu diễn tên rút gọn của ngày trong tuần |
dddd | Biểu diễn tên đầy đủ của ngày trong tuần |
ff | Biểu diễn hai chữ số của phần thập phân giây |
H | Biểu diễn giờ từ 0 đến 23 |
HH | Biểu diễn giờ từ 00 đến 23 |
MM | Biểu diễn tháng dưới dạng số từ 01 đến 12 |
MMM | Biểu diễn tên rút gọn của tháng |
ss | Biểu diễn giây dưới dạng số từ 0 đến 59 |
Đoạn mã bên dưới thể hiện việc sử dụng các bộ định dạng DateTime
tùy chỉnh.
class DateTimeFormat {
public static void Main(string[] args) {
DateTime date = DateTime.Now;
Console.WriteLine("Date is: {0:ddd MMM dd, yyyy}", date);
Console.WriteLine("Time: {0:hh:mm tt}", date);
Console.WriteLine("24-hour time: {0:HH:mm}", date);
Console.WriteLine("Time with seconds: {0:HH:mm:ss tt}", date);
Console.WriteLine("Day of month: {0:dd}", date);
Console.WriteLine("Year: {0:yyyy}", date);
}
}
Trong đoạn mã này, ngày và giờ được hiển thị bằng cách sử dụng các định dạng DateTime
tùy chỉnh khác nhau.
Hình bên dưới hiển thị kết quả của việc sử dụng các bộ định dạng DateTime
tùy chỉnh.