C# Advanced (Series #3)

1 min read

c#
  • C# – Anonymous Types
  • C# – Dynamic Types
  • C# – Ternary Operator ?:
  • C# Generics & Generic Constraints
  • C# – Delegates
  • C# – Func Delegate
  • C# – Action Delegate
  • C# – Anonymous Method
  • C# – Events
  • C# – Extension Method
  • C# – HttpClient

C# – Ternary Operator?:

C# bao gồm decision-making operator ?: được gọi là toán tử điều kiện hoặc toán tử ba ngôi. Đây là dạng rút gọn của điều kiện if else.

// Syntax
condition ? statement 1 : statement 2

Toán tử ba ngôi bắt đầu bằng điều kiện boolean. Nếu điều kiện này được đánh giá là đúng thì nó sẽ thực thi câu lệnh đầu tiên sau ?, nếu không thì câu lệnh thứ hai sau : sẽ được thực thi.

Ví dụ sau đây minh họa toán tử ba ngôi.

// Example: Ternary operator
int x = 20, y = 10;
var result = x > y ? "x is greater than y" : "x is less than y";
Console.WriteLine(result);
/*Output
x is greater than y
*/

Ở trên, biểu thức điều kiện x > y trả về true, vì vậy câu lệnh đầu tiên sau ? sẽ được thực thi.

Sau đây thực hiện câu lệnh thứ hai

// Example: Ternary operator
int x = 10, y = 100;
var result = x > y ? "x is greater than y" : "x is less than y";
Console.WriteLine(result);
/*Output
x is less than y
*/

Vì vậy, toán tử ba ngôi là dạng viết tắt của câu lệnh if else. Ví dụ trên có thể được viết lại bằng điều kiện if else

Toán tử ba ngôi lồng nhau

Có thể sử dụng các toán tử bậc ba lồng nhau bằng cách đưa biểu thức điều kiện làm câu lệnh thứ hai.

// Example: Nested ?:
int x = 10, y = 100;
string result = x > y ? "x is greater than y" : 
                    x < y ? "x is less than y" : 
                        x == y ? "x is equal to y" : "No result";
Console.WriteLine(result);

Toán tử ba ngôi có tính right-associative. Biểu thức a ? b : c ? d : e được đánh giá là ? b : (c ? d : e), không phải là (a ? b : c) ? d: đ.

// Example: Nested ?:
var x = 2, y = 10;
var result = x * 3 > y ? x : y > z? y : z;
Console.WriteLine(result);
Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *