我试着:
public interface I { abstract void F(); }我得到:
修饰符“抽象”对C# 7.3中的此项无效。请使用语言版本“预览”或更高版本。
然而,我发现https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8中没有提到这个特性(
我在哪里能找到那个的文档?还是这里的信息不对?
发布于 2019-04-29 23:29:09
发布于 2022-07-04 23:26:38
与另一个答案一样,c#8.0的回答也是合法的。但是在接口中有抽象方法有什么好处吗?
随着语言最近的改进,接口中的abstract函数可以被看作是没有默认实现的东西。
现在,C#接口可以为接口函数提供默认实现。看下面的例子。它是完全好的,输出是“默认实现的示例函数”。
//AN INTERFACE WITH DEFUALT METHOD
interface I
{
string Example()
{
return "Default implemented example function";
}
}
//CLASS IMPLEMENTING THE INTERFACE
class C : I
{
}
//AN EXAMPLE CLASS ACCESSING THE DEFAULT IMPLEMENTED example FUNCTION.
public class Test
{
public static void Main(string[] args)
{
I i = new C();
Console.WriteLine (i.Example());
}
}在上面的例子中,让我们假设尝试为接口中的“abstract ()”函数添加abstract。
代码将不会编译"'I.Example()‘不能声明一个主体,因为它被标记为抽象“
因此,当我们使用abstract时,很明显的方法是在类中定义函数(实现接口),用于任何用法(如下所示)。
//AN INTERFACE WITH ABSTRACT METHOD
interface I
{
abstract string Example();
}
//CLASS IMPLEMENTING THE INTERFACE AND GIVE A BODY FOR EXAMPLE FUNCTION
class C : I
{
public string Example()
{
return "Implemented example function";
}
}
//A CLASS ACCESSING THE CLASS METHOD EXAMPLE.
public class Test
{
public static void Main(string[] args)
{
I i = new C();
Console.WriteLine (i.Example());
}
}总之,将接口中的函数声明为abstract,接口中的函数不可能有默认的主体,相反,实现接口的类必须有接口的主体。
https://stackoverflow.com/questions/55911955
复制相似问题