امشب به تاریخ ۲۰ مهر، سؤالی در مورد ارثبری، interface و abstract class در سایت محبوب همگی ما، StackOverFlow منتشر شد. سؤال حاکی از رفتار عجیب قطعه کد زیر در نسخه ۸ سیشارپ است. تا به اینجا برای سؤال مذکور، یک پاسخ با اعتماد به نقس بالایی ارائه شد و پس از مدت اندکی حذف گردیده است.
interface I {
string M1() => "I.M1";
string M2() => "I.M2";
}
abstract class A : I {}
class C : A {
public string M1() => "C.M1";
public virtual string M2() => "C.M2";
}
class Program {
static void Main() {
I obj = new C();
System.Console.WriteLine(obj.M1());
System.Console.WriteLine(obj.M2());
}
}
نظر شما در مورد نحوه عملکرد چیست؟ در صورت استفاده از کلمه کلیدیهای new و override چه خروجیهایی خواهیم گرفت.
اگر برای شما هم این مبحث جذاب شده است، به
سؤال اصلی مراجعه کنید.