4
ทำไมพารามิเตอร์ทางเลือก C # 4 ที่กำหนดไว้ในส่วนต่อประสานไม่ได้ถูกบังคับใช้ในการใช้งานคลาส?
ฉันสังเกตเห็นว่าด้วยพารามิเตอร์ที่เป็นตัวเลือกใน C # 4 หากคุณระบุพารามิเตอร์ที่เป็นตัวเลือกบนอินเทอร์เฟซที่คุณไม่ต้องทำให้พารามิเตอร์นั้นเป็นตัวเลือกในชั้นเรียนการใช้งานใด ๆ : public interface MyInterface { void TestMethod(bool flag = false); } public class MyClass : MyInterface { public void TestMethod(bool flag) { Console.WriteLine(flag); } } และดังนั้นจึง: var obj = new MyClass(); obj.TestMethod(); // compiler error var obj2 = new MyClass() as MyInterface; obj2.TestMethod(); // …