hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Học lập trình
  • Lập Trình C# Cơ Bản
Biến và kiểu dữ liệu trong C#

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#
  • Định nghĩa
  • Sử Dụng Biến
  • Kiểu Dữ Liệu
  • Kiểu Dữ Liệu Được Xác Định Trước
  • Phân loại
  • Quy tắc
  • Tính hợp lệ
  • Khai báo
  • Biến Kiểu Ngầm Định
  • Bình Luận và Tài Liệu XML
  • Định nghĩa
  • Tài Liệu XML
  • Các Thẻ XML Được Định Sẵn
  • Hằng và Hằng số
  • Sự Cần Thiết của Hằng
  • Hằng số
  • Sử Dụng Giá Trị Cố Định
    • Hậu tố cho Giá Trị Số
  • Từ Khóa và Dãy Escape
    • Từ Khóa
    • Sự Cần Thiết của Ký Tự Dãy Escape
    • Định Nghĩa
    • Ký Tự Dãy Escape trong C#
  • Đầu vào và Đầu ra
  • Các Hoạt Động Console
  • Các Phương Thức Đầu Ra
  • Placeholders
  • Phương Thức Nhập (Input Methods)
  • Các Phương Thức Chuyển Đổi (Convert Methods)
  • Các Bộ Định Dạng Số (Numeric Format Specifiers)
  • Sử Dụng Bộ Định Dạng Số
  • Chuỗi Định Dạng Số Tùy Chỉnh
  • Thêm Bộ Định Dạng Số
  • Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
  • Sử Dụng Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
  • Bổ Sung Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn
  • Chuỗi Định Dạng DateTime Tùy Chỉnh

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ệuKích thướcĐộ rộng
byteSố nguyên 8-bit không dấu0 đến 255
sbyteSố nguyên 8-bit có dấu-128 đến 127
shortSố nguyên 16-bit có dấu-32,768 đến 32,767
ushortSố nguyên 16-bit không dấu0 đến 65,535
intSố nguyên 32-bit có dấu-2,147,483,648 đến 2,147,483,647
uintSố nguyên 32-bit không dấu0 đến 4,294,967,295
longSố nguyên 64-bit có dấu-9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807
ulongSố nguyên 64-bit không dấu0 đến 18,446,744,073,709,551,615
floatDấu chấm động 32-bit với độ chính xác 7 chữ số±1,5e-45 đến ±3,4e38
doubleDấu chấm động 64-bit với độ chính xác 15-16 chữ số±5.0e-324 đến ±1.7e308
decimalDấ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
charKý tự Unicode 16-bitU+0000 to U+ffff
boolLưu trữ giá trị đúng hoặc saitrue or false
Các Loại Dữ Liệu Được Định Sẵn

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ếnHợp lệ/ Không hợp lệ
EmployeeHợp lệ
studentHợp lệ
_NameHợp lệ
Emp_NameHợp lệ
@gotoHợp lệ
staticKhông hợp lệ vì nó là một từ khóa
4myclassKhông hợp lệ vì một biến không thể bắt đầu bằng một chữ số
Student&FacultyKhông hợp lệ vì một biến không thể chứa ký tự đặc biệt ‘&’
Tên Biến Hợp Lệ và Không Hợp Lệ

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ẻ XMLMô 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.
Các Thẻ XML Được Định Sẵn

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#.

abstractasbaseboolbreakbytecase

catch
charcheckedclassconstcontinue
decimaldefaultdelegatedodoubleelseenum
eventexplicitExternfalsefinallyfixedfloat
forforeachgotoifimplicitinintinterface
internalislocklongnamespacenewnull
objectoperatoroutoverrideparamsprivateprotected
public readonlyrefreturnsbytesealedshort
sizeofstackallocstaticstringstructswitchthis
throwtruetrytypeofuintulongunchecked
unsafeushortusingvirtualvoidvolatilewhile
Bảng từ khoá

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#.

addaliasascendingasyncawaitdescending

yield
dynamic

from
fromgetglobalgroupintojoinlet
orderbypartialremoveselectsetvaluevar
where
Các từ khoá ngữ cảnh trong C#

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 escapeKý 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.
\0Ký tự Unicode 0.
\aKý tự cảnh báo (Alert).
\bKý tự xóa lùi (Backspace).
\fKý tự đưa trang (Form feed).
\nKý tự xuống dòng (New line).
\rKý tự trả về (Carriage return).
\tKý 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).
\oooTươ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ố.
\xhhTươ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’.
\uhhhhTươ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.
Các Ký Tự Dãy Escape

Đ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ạngMô Tả
C hoặc cCurrencySố đượ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 dDecimalSố đượ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 eScientific (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).
Các Bộ Chỉ Số Định Dạng Số

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ạngMô Tả
0Nế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-0Nế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.
OtherBất kỳ ký tự nào khác đều được sao chép vào chuỗi kết quả.
Các Chỉ Định Định Dạng Số Nguyên Tùy Chỉnh

Đ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ạngTênMô Tả
F hoặc fFixed-pointSố đượ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 nNumberSố đượ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 HexadecimalSố đượ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”.
Bổ sung bộ định dạng số

Đ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ạngTênMô Tả
dShort dateHiển thị ngày theo mẫu ngày ngắn. Định dạng mặc định là ‘mm/dd/yy’.
DLong dateHiển thị ngày theo mẫu ngày dài. Định dạng mặc định là ‘dddd, MMMM dd, yyyy’.
fFull 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’.
FFull 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’.
gGeneral 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’.
Công cụ xác định định dạng ngày và giờ tiêu chuẩn

Đ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ạngTênMô Tả
G hoặc gGeneral date/timeHiể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 MMonth dayChỉ hiển thị tháng và ngày của ngày. Định dạng mặc định là ‘MMMM dd’.
t hoặc TShort timeHiển thị thời gian theo mẫu thời gian ngắn. Định dạng mặc định là ‘HH:mm’.
TLong timeHiể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 YYear month patternChỉ hiển thị tháng và năm từ ngày. Định dạng mặc định là ‘YYYY MMMM’.
Các Bộ Định Dạng Ngày và Giờ Tiêu Chuẩn Bổ Sung

Đ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ạngMô Tả
dddBiểu diễn tên rút gọn của ngày trong tuần
ddddBiểu diễn tên đầy đủ của ngày trong tuần
ffBiểu diễn hai chữ số của phần thập phân giây
HBiểu diễn giờ từ 0 đến 23
HHBiểu diễn giờ từ 00 đến 23
MMBiểu diễn tháng dưới dạng số từ 01 đến 12
MMMBiểu diễn tên rút gọn của tháng
ssBiểu diễn giây dưới dạng số từ 0 đến 59
Bộ Định Dạng DateTime Tùy Chỉnh

Đ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.

Bài viết liên quan:

Sắp xếp sủi bọt – Bubble Sort
TypeScript với Kiểu Dữ Liệu Cơ Bản – 3
TypeScript với Kiểu Dữ Liệu Cơ Bản – 2
TypeScript với Kiểu Dữ Liệu Cơ Bản – 1
Typescript cơ bản và cách cài đặt cho người mới
Thực Hành Micro Frontends
Dynamic Component trong Angular
Async Validator trong Angular Form
Reactive Forms Trong Angular (Phần 2)
Reactive Forms Trong Angular (Phần 1)
Template-driven Forms Trong Angular (Phần 2)
Template-driven Forms Trong Angular (Phần 1)

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×