Biến và hằng số trong C#

Biến trong C#

Biến là một cái tên được đặt cho một vùng lưu trữ mà chương trình của chúng ta có thể thao tác.

Mỗi biến trong C # có một loại cụ thể, xác định kích thước và cách bố trí bộ nhớ của biến đó.

Các kiểu giá trị cơ bản trong C# có thể được phân chia thành:

Kiểu dữ liệu Ví dụ
Kiểu số nguyên sbyte, byte, short, ushort, int, uint, long, ulong, và char
Kiểu số thực dấu chấm động float và double
Kiểu thập phân decimal
Kiểu Boolean true hoặc false
Kiểu Nullable Kiểu dữ liệu cho phép null

Định nghĩa biến trong C#

Cú pháp để định nghĩa biến trong C# là:

<data_type> <variable_list>;

Ở đây, data_type phải là một kiểu dữ liệu hợp lệ trong C# hoặc bất kỳ kiểu dữ liệu người dùng tự định nghĩa (user-defined) nào và variable_list là danh sách tên biến có thể chứa một hoặc nhiều tên định danh được cách nhau bởi dấu phẩy.

Dưới đây là một số định nghĩa biến hợp lệ trong C#:

int i, j, k;
char c, ch;
float f, salary;
double d;

Bạn có thể khởi tạo một biến tại thời điểm định nghĩa, như sau:

int i = 150;

Khởi tạo biến trong C#

Biến được khởi tạo (được gán một giá trị) với một dấu bằng được theo sau bởi một biểu thức hằng. Cú pháp chung cho khởi tạo biến trong C# là:

variable_name = value;

Các biến có thể được khởi tạo ngay lúc khai báo của chúng. Phần khởi tạo gồm một dấu bằng được theo sau bởi một biểu thức hằng, như sau:

<data_type> <variable_name> = value;

Một số ví dụ về khởi tạo biến trong C# là:

int d = 3, f = 5;    // initializing d and f.
byte z = 22;         // initializes z.
double pi = 3.14159; // declares an approximation of pi.
char x = 'x';        // the variable x has the value 'x'.

Việc khởi tạo biến một cách chính xác là một bài thực hành tốt cho bạn, nếu không thì chương trình có thể tạo ra kết quả không mong đợi.

Ví dụ sau sử dụng các kiểu biến đa dạng trong C#:

using System;

namespace VariableDefinition 
{
   class Program 
   {
      static void Main(string[] args) 
	  {
         short a;
         int b ;
         double c;

         // actual initialization
         a = 10;
         b = 20;
         c = a + b;
         Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c);
         Console.ReadLine();
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

a = 10, b = 20, c = 30

Bạn có thể tự biên dịch và xem kết quả online tại đây.

Nhận giá trị từ người dùng trong C#

Lớp Console trong thư viện System cung cấp hàm ReadLine() để nhận đầu vào từ người dùng (chẳng hạn nhập từ bàn phím) và lưu nó vào trong một biến.

Ví dụ:

int num;
num = Convert.ToInt32(Console.ReadLine());

Hàm Convert.ToInt32() chuyển đổi dữ liệu đã nhập bởi người dùng thành kiểu dữ liệu int, bởi vì Console.ReadLine() chấp nhận dữ liệu trong định dạng chuỗi.

Biểu thức Lvalue và Rvalue trong C#

Có hai loại biểu thức trong C#:

  • Lvalue: Một biểu thức mà là một Lvalue có thể xuất hiện hoặc bên trái hoặc bên phải của phép gán trong C#.
  • Rvalue: Một biểu thức mà là một Rvalue có thể xuất hiện bên phải nhưng không thể ở bên trái của một phép gán trong C#.

Các biến là Lvalue và vì thế chúng có thể xuất hiện ở bên trái của một phép gán. Các hằng số là Rvalue và vì thế chúng không thể được gán và không thể xuất hiện ở bên trái của một phép gán. Sau đây là một lệnh hợp lệ trong C#:

int g = 20;

Nhưng lệnh sau là không hợp lệ và sẽ tạo một lỗi lúc biên dịch trong C#:

20 = 30;

Hằng số trong C#

Các hằng số tham chiếu đến các giá trị cố định mà chương trình không thể thay đổi trong quá trình thực thi. Những giá trị cố định này cũng được gọi là literal.

Hằng số có thể là bất kỳ kiểu dữ liệu cơ bản nào trong C# như hằng số nguyên, hằng số thực, hằng ký tự, hằng chuỗi, ... Ngoài ra, C# cũng có các kiểu hằng liệt kê.

Các hằng số được xử lý giống như các biến thông thường ngoại trừ các giá trị của chúng không thể được sửa đổi sau khi chúng được định nghĩa.

Hằng số nguyên trong C#

Một hằng số nguyên có thể là một hằng số thập phân hoặc thập lục phân. Một tiền tố chỉ định cơ sở hoặc cơ số: 0x hoặc 0X cho thập lục phân và không có  tiền tố cho số thập phân.

Một số hằng số nguyên cũng có thể có một hậu tố là sự kết hợp của U và L, tương ứng unsignedlong. Hậu tố có thể là chữ hoa hoặc chữ thường và có thể theo thứ tự bất kỳ.

Dưới đây là một số ví dụ về hằng số nguyên

212         /* hợp lệ */
215u        /* hợp lệ */
0xFeeL      /* hợp lệ */
078         /* không hợp lệ: 8 không phải là chữ số trong hệ cơ số 8 */
032UU       /* không hợp lệ: không thể lặp lại hậu tố */

Dưới đây là các kiểu hằng số nguyên đa dạng:

85         /* thập phân */
0213       /* hệ cơ số 8 */
0x4b       /* hệ cơ số 16 */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

Hằng số thực trong C#

Một hằng số thực bao gồm phần nguyên (integer part), dấu chấm thập phân (decimal point), phần lẻ (fraction part) và phần mũ (exponent part). Chúng ta có thể biểu diễn hằng số thực theo dạng decimal hay dạng mũ.

Xét các ví dụ sau:

3.14159       /* hợp lệ */
314159E-5L    /* hợp lệ */
510E          /* không hợp lệ: phần exponent chưa hoàn thành */
210f          /* không hợp lệ: thiếu phần decimal hoặc exponent */
.e55          /* không hợp lệ: thiếu phần integer hoặc fraction */

Khi thể hiện dạng decimal phải bao gồm dấu chấm thập phân, phần mũ hoặc cả hai. Khi thể hiện dạng mũ phải gồm phần nguyên, phần lẻ hoặc cả hai. Dạng mũ đi kèm với kí tự E hoặc e.

Hằng ký tự trong C#

Các hằng kí tự trong C# mở đầu và kết thúc bởi dấu nháy đơn. Nếu hằng ký tự bắt đầu với L (ví dụ L'x') thì nó là kiểu wchar_t. Nếu không thì, nó là hằng ký tự kiểu char, ví dụ như 'x'.

Hằng kí tự có thể là một kí tự (như 'X'), một ký tự đặc biệt (như '\t') hay một kí tự mở rộng (như '\u02c0′).

Một số kí tự trong C# khi được đứng trước bởi dấu \ thì chúng sẽ mang một ý nghĩa đặc biệt như bắt đầu dòng mới '\n' hay tạo một tab '\t'. Bảng dưới đây thể hiện một số ký tự đặc biệt:

Ký tự Ý nghĩa
\\ Ký tự \
\' Ký tự '
\" Ký tự "
\? Ký tự ?
\a Tiếng chuông
\b Backspace
\f Form feed
\n Dòng mới
\r Carriage return
\t tab ngang
\v tab dọc
\ooo Số trong cơ số 8 của 1 đến 3 chữ số
\xhh . . . Số thập lục phân của một hoặc nhiều chữ số

Sau đây là ví dụ để chỉ một số ký tự đặc biệt:

using System;

namespace EscapeChar 
{
   class Program 
   {
      static void Main(string[] args) 
      {
         Console.WriteLine("Hello\tWorld\n\n");
         Console.WriteLine("I'm Comdy.");
         Console.ReadLine();
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Hello   World

I'm Comdy.

Bạn có thể tự biên dịch và xem kết quả online tại đây.

Hằng chuỗi trong C#

Hằng chuỗi chứa trong dấu nháy kép, ví dụ "abc". Một chuỗi sẽ chứa các kí tự tương tự hằng kí tự, gồm các ký tự thuần, ký tự đặc biệt, và các ký tự mở rộng.

Có thể ngắt một dòng dài thành nhiều dòng bởi sử dụng hằng chuỗi và phân biệt chúng bởi sử dụng khoảng trắng (whitespace).

Xét ví dụ một hằng chuỗi trong C# thể hiện theo 3 cách khác nhau:

"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
@"hello dear"

Định nghĩa hằng trong C#

Hằng trong C# được định nghĩa bởi sử dụng từ khóa const. Cú pháp để định nghĩa một hằng là:

const <data_type> <constant_name> = value;

Chương trình sau minh họa cách định nghĩa và sử dụng một hằng trong chương trình C# của bạn:

using System;

namespace DeclaringConstants 
{
   class Program 
   {
      static void Main(string[] args) 
      {
         const double pi = 3.14159;   
            
         // constant declaration 
         double r;
         Console.WriteLine("Enter Radius: ");
         r = Convert.ToDouble(Console.ReadLine());
            
         double areaCircle = pi * r * r;
         Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
         Console.ReadLine();
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Enter Radius: 
3
Radius: 3, Area: 28.27431

Bạn có thể tự biên dịch và xem kết quả online tại đây.

Bạn có muốn xem bài viết tiếp theo không? Nó ở dưới đây nè.

Toán tử trong C# | Comdy
Toán tử trong C# là gì? Có bao nhiêu loại toán tử trong C#? Bài viết này sẽ hướng dẫn cho bạn.


Bài viết liên quan:

Hướng dẫn này sẽ giúp bạn tìm hiểu về đọc ghi file (File I/O) trong C# và sử dụng các lớp tiện ích để đọc ghi file.

Reflection trong C#

  • 6 min read

Reflection trong C# là gì? Ứng dụng của Reflection trong C#. Cách khai báo và sử dụng Reflection trong C#.

Attribute trong C#

  • 7 min read

Attribute trong C# là gì? Có những loại attribute nào trong C#? Làm sao để sử dụng attribute trong C#.