2.3.3.1. Quy tắc thứ tự ưu tiờn (Precedence order rule)
Độ ưu tiờn của cỏc phộp toỏn trong biểu thức thực hiện theo thứ
tự từ trờn xuống như trong bảng sau. Cú thể chủ động quy định thứ tự
thực hiện phộp toỏn trong biểu thức bằng những cặp ngoặc trũn ( ), trong ngoặc sẽ thực hiện trước, và ngoặc trong thực hiện trước, ngoặc
ngoài thực hiện sau. Cỏc phộp toỏn trờn cựng hàng sẽ cú cựng độ ưu tiờn.
Bảng 2.4. Bảng quy tắc thứ tự ưu tiờn
Toỏn tử Ghi chỳ Quy tắc kết hợp
( ), [], .
Dấu . để truy xuất biến, phương
thức của đối tượng, lớp, [] truy xuất phần tử của mảng
Trỏi sang phải
++, --, +op, -op, !,
Dấu +op, -op là dấu dương, õm,
! là phộp phủ định logic, là đảo
bớt
Phải sang trỏi
new, (type) op (type) op là phộp chuyển đổi
kiểu Phải sang trỏi
*, /, % Trỏi sang phải
+, - Cỏc phộp toỏn số học Trỏi sang phải
<<, >>, >>> Phộp toỏn dịch chuyển bit Trỏi sang phải
<, >, <=, >=, is Trỏi sang phải
==, != Cỏc phộp toỏn quan hệ Trỏi sang phải
& Trỏi sang phải
^
Cỏc phộp toỏn trờn từng bit
| Trỏi sang phải
&& Trỏi sang phải
|| Cỏc phộp toỏn logic Trỏi sang phải
? : Phộp toỏn điều kiện Phải sang trỏi
=, +=, -=, *=, /=, %=, ^=, &=,
|=, <<=, >>=, >>>=
Cỏc phộp toỏn gỏn Phải sang trỏi
2.3.3.2. Quy tắc kết hợp (Associativity rule)
Quy tắc kết hợp thực hiện trờn cỏc phộp toỏn cú cựng độ ưu tiờn
theo thứ tự từ trỏi qua phải hay từ phải qua trỏi như trong bảng 2.4
Vớ dụ:
int x = a + b - c; //Thứ tự thực hiện phộp toỏn + - từ trỏi qua phải
s += a += b += c; //Thứ tự thực hiện phộp gỏn từ phải sang trỏi
2.3.3.3. Quy tắc nõng cấp toỏn hạng (Operand promotion rule)
C# tự động nõng cấp kiểu cơ sở nào đú thành kiểu cơ sở khỏc lớn hơn, khi cú nhu cầu. Chẳng hạn, nõng cấp kiểu char thành int, short hoặc int thành long, nõng cấp kiểu float thành double, hay kiểu
nguyờn thành kiểu thực. Cỏc trường hợp chuyển đổi kiểu như vậy khụng làm mất mỏt thụng tin.
Vớ dụ: short x = 10; int y = x;
char c = 'A'; //ký tự 'A' cú mó unicode 65 Console.WriteLine(c+1); //in ra mó unicode 66 C# tự động nõng cấp kiểu char của biến c thành int
Trường hợp chuyển đổi cỏc số thực (float, double, decimal) thành số nguyờn (byte, sbyte, short, ushort, int, uint, long, ulong), và việc chuyển đổi cỏc kiểu lớn thành cỏc kiểu nhỏ hơn như long thành
int, kết quả tớnh toỏn cú thể thiếu chớnh xỏc, do đú C# khụng tự động thực hiện.
Vớ dụ:
byte a, b = 200, c = 100; a = b + c;
Lỗi do kiểu byte của b, c nõng cấp thành int, vỡ vậy khụng thể
gỏn giỏ trị kiểu int cho biến kiểu byte.
2.3.3.4. Quy tắc chuyển kiểu (Casting rule)
Nếu bạn muốn chuyển đổi giữa cỏc kiểu dữ liệu, sử dụng cỳ phỏp như sau:
(KiểuMới) Value
Vớ dụ:
byte a, b = 200, c = 100; a = (byte) (b+c);
Khụng lỗi nhưng cú thể mất mỏt thụng tin, do kiểu byte: 0-255 char c = ‘A’;
Console.WriteLine((char)(c+32)) //in ra ký tự ‘a’
int a=5, b=2;
Console.WriteLine((double) a / b); //in ra 2.5
Cú thể chuyển giữa 2 kiểu tham chiếu, chẳng hạn ta cú một giao
tiếp IHinhPhang, và lớp HinhChuNhat là lớp cài đặt giao tiếp
IHinhPhang:
IHinhPhang HCN = new HinhChuNhat(2, 3); Console.WriteLine(((HinhChuNhat)HCN).Canh2);
2.4. LỆNH (STATEMENT)
Lệnh cú thể là lệnh đơn, khối lệnh hay cấu trỳc điều khiển.
2.4.1. Lệnh đơn (Simple statement)
Lệnh đơn là thành phần cơ bản nhất trong chương trỡnh C#, diễn
đạt một thao tỏc riờng lẻ nào đú phải làm, được kết thỳc bằng dấu chấm phẩy.
Lệnh đơn cú thể là lời gọi phương thức, phộp gỏn, phộp tăng,
giảm giỏ trị biến, cỏc lệnh định nghĩa, khai bỏo.
Vớ dụ: int i =1;
Console.WriteLine("Đõy là một hằng chuỗi");
x++;