为什么我无法添加此接口的默认实现?
我有C#8 / .NET Core 3.0(如Main中所示)
但是由于某种原因它大喊:
'ITest.Test()':接口成员不能具有定义
interface ITest
{
// Interface members cannot have a definition
void Test()
{
Console.WriteLine("Interface");
}
}
public class Test : ITest
{
void ITest.Test()
{
throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
// this works properly
var arr = "test".ToCharArray();
Console.WriteLine(arr[1..2]);
Console.WriteLine(arr[..2]);
Console.WriteLine(arr[..^1]);
Console.WriteLine(arr[^1..]);
}
}
答案 0 :(得分:4)
默认的界面方法功能为not available yet, even in the C# 8.0 preview(由Microsoft代表响应“ Rand.Random”评论者的询问,询问该功能是否未在预览中得到确认)。
如果要提供实现,我建议使用继承和虚拟方法。
public class TestBase
{
public virtual void TestMethod()
{
Console.WriteLine("TestBase");
}
}
public class Test : TestBase
{
public override void TestMethod()
{
throw new NotImplementedException();
}
}
public class Program
{
public static void Main(string[] args)
{
var testBase = new TestBase();
testBase.TestMethod(); // Prints "TestBase"
var test = new Test();
test.TestMethod(); // Throws NotImplementedException
}
}
答案 1 :(得分:4)
因为此功能尚不可用。根据{{3}},此功能处于原型阶段。 dymanoid's link中没有提到C#8.0 beta版。