Mengapa perilaku Metode Antarmuka Default diubah dalam C # 8? Di masa lalu kode berikut (Ketika metode antarmuka Default adalah demo tidak dirilis):
interface IDefaultInterfaceMethod
{
// By default, this method will be virtual, and the virtual keyword can be here used!
virtual void DefaultMethod()
{
Console.WriteLine("I am a default method in the interface!");
}
}
interface IOverrideDefaultInterfaceMethod : IDefaultInterfaceMethod
{
void IDefaultInterfaceMethod.DefaultMethod()
{
Console.WriteLine("I am an overridden default method!");
}
}
class AnyClass : IDefaultInterfaceMethod, IOverrideDefaultInterfaceMethod
{
}
class Program
{
static void Main()
{
IDefaultInterfaceMethod anyClass = new AnyClass();
anyClass.DefaultMethod();
IOverrideDefaultInterfaceMethod anyClassOverridden = new AnyClass();
anyClassOverridden.DefaultMethod();
}
}
memiliki output sebagai berikut:
Output konsol:
Saya adalah metode default di antarmuka!
Saya adalah metode default yang diganti!
Tetapi dengan C # 8 versi terakhir kode di atas menghasilkan output berikut:
Output konsol:
Saya adalah metode default yang diganti!
Saya adalah metode default yang diganti!
Adakah yang bisa menjelaskan kepada saya mengapa perilaku ini diubah?
catatan:
IDefaultInterfaceMethod anyClass = new AnyClass(); anyClass.DefaultMethod();
((IDefaultInterfaceMethod) anyClass).DefaultMethod(); // STILL the same problem!??
c#
c#-8.0
default-interface-member
Bassam Alugili
sumber
sumber
Cut base() syntax for C# 8. We intend to bring this back in the next major release.
. Ini akan membutuhkan dukungan runtime agar berfungsi dengan benar.virtual
saya kira? Dan mungkin memperkenalkan intan warisanJawaban:
Saya menduga pertanyaan yang lebih baik adalah:
Fitur ini direncanakan tetapi dipotong dari C # 8 pada April 2019 , karena implementasi yang efisien akan memerlukan dukungan dari runtime. Ini tidak dapat ditambahkan dalam waktu sebelum rilis. Fitur ini harus bekerja dengan baik untuk C # dan VB.NET - F # toh tidak menyukai antarmuka.
Ini akan bekerja melalui
base()
panggilan yang mirip dengan cara kerja kelas. Mengooptasi contoh proposal:sumber
Why would you do that?
. Kemudian saya menemukan notulen rapat