ตัวดำเนินการ
คือเครื่องหมายที่ใช้เพื่อให้ทำงานกับตัวแปรและค่าคงที่เพื่อสร้าง
expression ในการเขียนโปรแกรม ในภาษา C#มีตัวดำเนินการประเภทต่างๆ
ที่คุณจะต้องรู้จักก่อนที่จะเขียนโปรแกรม
ข้างล่างนี้เป็นรายการของประเภทตัวดำเนินการที่คุณจะได้เรียนในบทเรียนนี้
- Assignment operator
- Arithmetic operators
- Compound assignment
- Increment and decrement
- Relational and comparison operators
- Logical operators
- Conditional ternary operator
- Bitwise operators
- Explicit type casting operator
Assignment operator
assignment operator หรือตัวดำเนินการกำหนดค่าใช้เคื่องหมายเท่ากับ
=
มันใช้สำหรับกำหนดค่าให้กับตัวแปรในภาษา C# ยกตัวอย่างเช่น:
float weight = 58.3f;
int y = -3;
int x = y;
string name = "Marcus";
ในตัวอย่างด้านบน เราได้ใช้ตัวดำเนินการกำหนดค่าเพื่อกับหนดค่าให้กับตัวแปรซึ่งมีประเภทข้อมูลแบบต่างๆ
Arithmetic operators
ใน
ภาษา C#
มีตัวดำเนินการทางคณิตศาสตร์เพื่อใช้ในการดำเนินการในคณิตศาสตร์ต่างๆ เช่น
การบวก การลบ การคูณ การหาร และอื่นๆ ในการเขียนโปรแกรม
เราเรียกตัวดำเนินการเหล่านี้ว่า operand เพื่อใช่จัดการกับข้อมูลที่เรามี
ข้างล่างนี้เป็นตารางของตัวดำเนินการทางคณิตศาสตร์ในภาษา C#
Symbol | Name | Example |
+ | Addition | c = a + b |
- | Subtraction | c = a - b |
* | Multiplication | c = a * b |
/ | Division | c = a / b |
% | Modulo | c = a % b |
มาดูตัวอย่างในการใช้ตัวดำเนินการทางคณิตศาสตร์เบื้องต้นในภาษา C#
using System;
class ArithmeticOperators
{
static void Main(string[] args)
{
int a = 10;
int b = 3;
float c = 2.0f;
Console.WriteLine("a + b = " + (a + b));
Console.WriteLine("a - b = " + (a - b));
Console.WriteLine("a * c = " + (a * c));
Console.WriteLine("a / c = " + (a / c));
Console.WriteLine("a % c = " + (a % c));
Console.ReadKey();
}
}
ใน
ตัวอย่าง เราได้สร้างตัวแปรสองตัวสำหรับเห็นค่าตัวเลขจำนวนเต็ม (integer)
และอีกหนึ่งตัวเพื่อเก็บจำนวนจริง (floating point)
เราได้ใช้ตัวดำเนินการทางคณิตศาสตร์ สำหรับการบวก การลบ การคูณ การหาร
และมอดดูโล (การหารเอาเศษ)
และนี่เป็นผลลัพธ์เมื่อโปรแกรมได้รัน
a + b = 13
a - b = 7
a * c = 20
a / c = 5
a % c = 0
Compound assignment
Compound
assignment operators
เป็นตัวดำเนินการใช้สำหรับปรับปรุงหรืออัพเดทค่าของตัวแปร
โดยมีข้อกำหนดว่าข้อมูลใหม่นั้นต้องมีความสัมพันธ์กับข้อมูลเดิม เช่น
เพิ่มค่าของ x ไปอีก 10 กล่าวอีกนัยหนึ่งมันเป็นรูปแบบสั้นของ arithmetic
operators
ข้างล่างนี้เป็นรายการของ compound assignment operators ในภาษา C# ที่คุณต้องทราบ
Operator | Example | Equivalent to |
+= | a += 2; | a = a + 2 |
-= | a -= 2; | a = a - 2 |
*= | a *= 2; | a = a * 2 |
/= | a /= 2; | a= a / 2 |
%= | a %= 2; | a = a % 2 |
>>= | a >>= 2; | a = a >> 2 |
<<= | a <<= 2 | a = a << 2 |
&= | a & = 2; | a = a & 2 |
^= | a ^= 2; | a= a ^ 2 |
|= | a |= 2; | a = a | 2 |
มาดูตัวอย่างการใช้งาน
int money = 100;
money += 30; // equivalent to money = money + 30
money += 50; // equivalent to money = money + 50
ในตัวอย่าง เป็นการเพิ่มค่าให้กับตัวแปร
money มันมีค่าเหมือนกับคอมเม้นต์ทางด้านขวา
Increment และ decrement
Increment
และ decrement เป็นตัวดำเนินการที่ใช้สำหรับเพิ่มค่าและลดค่าตามลำดับ
ผลลัพธ์คือค่าของตัวแปรจะเพิ่มขึ้นหรือลดลง 1 เท่านั้น ซึ่งในตัวดำเนินการ
increment และ decrement ก็จะแบ่งออกเป็น 2 แบบคือ prefix และ postfix
และเครื่องหมายที่ใช้ในตัวดำเนินการนี้คือ
++
และ
--
Type | Operator | Example | Equivalent to |
Prefix | ++ | ++a | a = a + 1 |
Postfix | ++ | a++ | a = a + 1 |
Prefix | -- | --a | a = a - 1 |
Postfix | -- | a-- | a = a - 1 |
Prefix
เป็นการใส่เครื่องหมายไว้หน้าของตัวแปร
การทำงานค่าของตัวแปรจะเพิ่มก่อนที่จะทำงานคำสั่งปัจจุบัน ในขณะที่ postfix
เป็นการใส่เครื่องหมายทางด้านหลัง
การทำงานค่าของตัวแปรจะถูกเพิ่มขึ้นหลังจากที่คำสั่งปัจจุบันทำงานเสร็จสิ้น
แล้ว
มาดูตัวอย่างเพื่อให้คุณเข้าใจมันได้มากขึ้น
using System;
class IncrementDecrement
{
static void Main(string[] args)
{
int a = 5;
int b = 5;
Console.WriteLine("a = {0}", ++a);
Console.WriteLine("b = {0}", b++);
// now b is 6
Console.ReadKey();
}
}
และนี่เป็นผลลัพธ์ชองโปรแกรม
a = 6
b = 5
จาก
ตัวอย่างข้างบน เรามีตัวแปรสองตัวคือ a และ b
และได้กำหนดค่าเริ่มต้นให้กับทั้งสองเป็น 5 ตัวแปร a นั้นจะแสดงผลออกมาเป็น
6 เพราะว่าการทำงานของ increment แบบ postfix จะเพิ่มค่าก่อน ส่วน b
นั้นยังคงเป็น 5 เพราะจะต้องเพิ่มค่าหลังจากการทำงานของบรรทัดนั้นเสร็จสิ้น
Relational และ comparison operators
ตัว
ดำเนินการเปรียบเทียบ (comparison) และความสัมพันธ์ (relational)
ถูกใช้ในการสร้าง expression กับตัวแปรและค่าคงที่ โดยผลลัพธ์ของ
expression จะมีแค่เพียง
true
หรือ
false
เท่านั้น มันมักจะใช้เพื่อสร้างเงื่อนไขเพื่อใช้กับคำสั่งในการเปรียบเทีบล เช่น if else, switch, while, do-while, for เป็นต้น
ตารางของ relational และ comparison operators ในภาษา C#
Operater | Example | Result |
== | a == b | true if a equal to b, otherwise false |
!= | a != b | true if a not equal to b, otherwise false |
< | a < b | true if a less than b, otherwise false |
> | a > b | true if a greater than b, otherwise false |
<= | a <= b | true if a less than or equal to b, otherwise false |
>= | a >= b | true if a greater than or equal to b, otherwise false |
ต่อไปมาดูตัวอย่างในการใช้ตัวดำเนินการเปรียบเทียบ
int n = 10;
if (n % 2 == 0) {
Console.WriteLine("n is even number.");
}
int x = 6, y = 2;
if (x < y) {
Console.WriteLine("x is less than y");
}
และนี่เป็นผลลัพธ์เมื่อได้รันโปรแกรม
n is even number.
จากตัวอย่างข้างบน เราได้ใช้ตัวดำเนินการเปรียบเทียบ
==
เพื่อตรวจสอบถ้า
n นั้นเป็นจำนวนคู่ แล้วโปรแกรมก็จะทำงานในบล็อคคำสั่งของ IF ต่อมา เราได้ใช้ตัวดำเนินการเปรียบเทียบน้อยกว่า
<
เพื่อตรวจสอบว่าถ้า
x น้อยกว่า
y เนื่องจาก
x ไม่ได้น้อยกว่า
y ดังนั้นโปรแกรมจึงไม่ทำงานในบล็อคคำสั่งของ IF
Logical operators
ตัว
ดำเนินการเชิงตรรกะ (logical operators) มักจะใช้ในการตรวจสอบกับค่าของ
boolean โดยปกติตัวดำเนินการเปรียบเทียบจะให้ผลลัพธ์เป็น boolean อยู่แล้ว
ในภาษา C# มีตัวดำเนินการเชิงตรรกะอยู่ 3 แบบ
ตารางของ logical operators
Symbol | Name | Example |
! | Not | ! (n==1) |
&& | And | a == 1 && b == 1 |
|| | Or | a == 1 || b == 1 |
มาดูตัวอย่างการใช้ตัวดำเนินการเชิงตรรกะ
using System;
class LogicalOperators
{
static void Main(string[] args)
{
bool a = (3 == 4);
bool b = (3 != 4);
bool c = (3 < 4);
bool d = a && c;
bool e = !d;
Console.WriteLine("a = " + a);
Console.WriteLine("b = " + b);
Console.WriteLine("c = " + c);
Console.WriteLine("d = " + d);
Console.WriteLine("e = " + e);
Console.ReadKey();
}
}
จาก
ตัวอย่างด้านบนเราได้สร้างตัวแปร boolean สำหรับเก็บค่าจาก expression
ที่ถูกประเมินผลกับโอเปอแรน ตัวดำเนินการเปรียบเทียบและตัวดำเนินการตรรกะ
ที่มันจะ return ค่าสุดท้ายคือ
True หรือ
False
a = False
b = True
c = True
d = False
e = True
และนี่เป็นผลลัพธ์ของโปรแกรม
ตัวดำเนินการตรรกะโดยปกติมักจะใช้กับคำสั่งเงื่อนไขหรือคำสั่งวนซ้ำ ดังตัวอย่างข้างล่างนี้
using System;
class LogicalOperators
{
static void Main(string[] args)
{
int age = 20;
int money = 100;
if(age >= 18 && money >= 120) {
Console.WriteLine("You can buy a game.");
}
if(age >= 18 || money >= 500) {
Console.WriteLine("You can buy a movie.");
}
Console.ReadKey();
}
}
ในตัวอย่าง เราได้สร้างเงื่อนไขเพิ่มเติมโดยการใช้ตัวดำเนินการตรรกะ เราใช้ตัวดำเนินการ "and"
&&
นั่นหมายความว่าแต่ละ expression ย่อยต้องมีค่าเป็นจริง
สำหรับการซื้อเกมผู้ใช้ต้องมีอายุตั้งแต่ 18 ปีขึนไปและต้องมีเงินตั้งแต่
120 ขึ้นไป สำหรับการซื้อภาพยนตร์ เราได้ใช้ตัวดำเนินการ "or"
||
โดยเราต้องการเพียงแค่เงื่อนไขใดเงื่อนไขหนึ่งเท่านั้นที่เป็นจริง หรือทั้งสอง
Conditional ternary operator (?)
ternary operator นั้นจะใช้เครื่องหมาย
?
มันถูกใช้ในการประเมินค่าของ expression และจะให้ผลลัพธ์เป็นค่าแรกถ้าหาก
expression เป็น true และค่าที่สองถ้า expression เป็น false
โดยค่าทั้งสองต้องเป้นประเภทหรือชนิดข้อมูลชนิดเดียวกัน
โดยมันมีรูปแบบการใช้งานดังนี้
expression ? value1 : value2;
String cc = "NY";
Console.WriteLine(cc == "NY" ? "New York" : "Other states");
ในตัวอย่าง จากคำสั่ง
cc == "NY"
นั้นคือ expression ที่เราสร้างขึ้นจาก ternary operator และ "New York"
นั้นจะผลเป็รผลลัพธ์เมื่อ expression นี้เป็น true และค่าที่สองคือ "Other
states" จะเป็นผลลัพธ์เมื่อ expression เป็น false
โปรดจำไว้ว่าค่าทั้งสองจะต้องเป็นประเภทข้อมูลเดียวกันเสมอ
New York
และนี่เป็นผลลัพธ์ของโปรแกรม มันจะแสดง "New York" เพราะว่า expression ของเราเป็น true
Bitwise operators
ในภาษา C# จะมีตัวดำเนินการระดับบิท (bitwise operators) โดยจะทำงานกับค่าของบิท ในรูปแบบต่างๆ ของข้อมูลที่เก็บไว้ในตัวแปร
และนี่เป็นตารางของ Bitwise operators ในภาษา C#
Symbol | Description |
& | Bitwise AND |
| | Bitwise inclusive OR |
^ | Bitwise exclusive OR |
~ | bit inversion |
<< | Shift bits left |
>> | Shift bits right |
Explicit type casting operator
Explicit
type casting ในภาษา C#
นั้นหมายความว่าเป็นการแปลงจากประเภทข้อมูลชนิดหนึ่งไปเป็นประเภทข้อมูลอีก
ชนิดหนึ่ง Explicit type casting จะเกิดขึ้นอัตโนมติเมื่อ literals
ให้กับตัวแปรหรือค่าคงที่ หรือสามารถเกิดขึ้นโดยการใช้วิธีการของ c-like
ซึ่งสืบทอดมาจาดภาษา C
int a = 10.5; // ตัวเลขนี้จะแปลงไปเป็น Integer อัตโนมัติ
int b = (int) 89.23; // c-like
float c = (int) b;
ในบทเรียนนี้ คุณได้เรียนรู้และทำความรู้จักกับภาษา C#และได้ดูวิธีการใช้งานในเบื้องต้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น