|| เรียกว่า ตรรกะ OR โอเปอเรเตอร์ และ | เรียกว่า ตรรกะระดับบิต OR แต่ความแตกต่างพื้นฐานระหว่างพวกเขาอยู่ในวิธีการดำเนินการ ไวยากรณ์สำหรับ || และ | เช่นเดียวกับต่อไปนี้ −
- bool_exp1 || bool_exp2
- bool_exp1 | bool_exp2
- ตอนนี้ syntax ของ 1 และ 2 ดูคล้ายกันแต่วิธีดำเนินการต่างกันโดยสิ้นเชิง
- ในคำสั่งแรก คำสั่งแรก bool_exp1 จะถูกดำเนินการ จากนั้นผลของนิพจน์นี้จะกำหนดการดำเนินการของคำสั่งอื่น
- หากเป็นจริง OR จะเป็นจริง ดังนั้นจึงไม่สมเหตุสมผลที่จะดำเนินการคำสั่งอื่น
- คำสั่ง bool_exp2 จะถูกดำเนินการก็ต่อเมื่อ bool_exp1 ส่งคืนการดำเนินการเท็จเท่านั้น
- เรียกอีกอย่างว่าโอเปอเรเตอร์ไฟฟ้าลัดวงจรเพราะมันทำให้วงจร (คำสั่ง) ลัดวงจรโดยพิจารณาจากผลลัพธ์ของนิพจน์แรก
- ตอนนี้ในกรณีของ | สิ่งที่แตกต่างกัน คอมไพเลอร์จะดำเนินการทั้งสองคำสั่ง กล่าวอีกนัยหนึ่ง คำสั่งทั้งสองจะถูกดำเนินการโดยไม่คำนึงถึงผลลัพธ์ของคำสั่งเดียว
- เป็นวิธีที่ไม่มีประสิทธิภาพในการทำสิ่งต่างๆ เนื่องจากไม่สมเหตุสมผลที่จะดำเนินการคำสั่งอื่น หากข้อใดข้อหนึ่งเป็นจริง เนื่องจากผลลัพธ์ของ OR มีผลเฉพาะผลลัพธ์ที่ประเมินเป็น "เท็จ" และเป็นไปได้เมื่อทั้งสองข้อความเป็นเท็จ
ตรรกะหรือ
ตัวอย่าง
using System; namespace DemoApplication{ public class Program{ static void Main(string[] args){ if(Condition1() || Condition2()){ Console.WriteLine("Logical OR If Condition Executed"); } Console.ReadLine(); } static bool Condition1(){ Console.WriteLine("Condition 1 executed"); return true; } static bool Condition2(){ Console.WriteLine("Condition 2 executed"); return true; } } }
ผลลัพธ์
Condition 1 executed Logical OR If Condition Executed
ตรรกะระดับบิตหรือ
ตัวอย่าง
using System; namespace DemoApplication{ public class Program{ static void Main(string[] args){ if(Condition1() | Condition2()){ Console.WriteLine("Logical OR If Condition Executed"); } Console.ReadLine(); } static bool Condition1(){ Console.WriteLine("Condition 1 executed"); return true; } static bool Condition2(){ Console.WriteLine("Condition 2 executed"); return true; } } }
ผลลัพธ์
Condition 1 executed Condition 2 executed Logical OR If Condition Executed