C# 协议与接口

C# 协议与接口,c#,objective-c,syntax,swift,C#,Objective C,Syntax,Swift,我一直在阅读swift文档,在操场上工作。我必须承认我对Objective-C/iOS开发一无所知(至少在Xamarin之外)。在我看来,协议似乎与C#接口完全相同 然而,我注意到,当我在web上四处查看时,Objective-C既有一个协议()的概念,也有一个接口(尽管我不确定两者的区别是什么)。斯威夫特似乎并没有两者兼备——只有协议 有人能为斯威夫特解释一下协议和C#接口之间的区别/关系吗 更新:我理解答案在功能上可能与列出的副本相同,但我认为,鉴于这是在询问另一种语言,这个问题本身仍然有价

我一直在阅读swift文档,在操场上工作。我必须承认我对Objective-C/iOS开发一无所知(至少在Xamarin之外)。在我看来,协议似乎与C#接口完全相同

然而,我注意到,当我在web上四处查看时,Objective-C既有一个协议()的概念,也有一个接口(尽管我不确定两者的区别是什么)。斯威夫特似乎并没有两者兼备——只有协议

有人能为斯威夫特解释一下协议和C#接口之间的区别/关系吗


更新:我理解答案在功能上可能与列出的副本相同,但我认为,鉴于这是在询问另一种语言,这个问题本身仍然有价值。毕竟,swift的新开发人员可能不懂Java(除了Javascript,我一点也不懂)。期望某人拥有完全不同的语言系统的知识,以获得问题的答案,这有点过分,不是吗!?关于meta的讨论也在讨论这个问题。

Objective C协议的用途基本上与Java/C中的接口相同。目标C接口文件是不同的。与C类似,Objective C具有公开声明类的方法和属性的接口文件,然后在实现文件中实现这些方法和属性。例如,您可能有一个类的接口文件,其外观如下:

@interface  
-(void)myMethod;
@end
然后在实现文件中实际实现该方法:

-(void)myMethod{
    //code
}

Swift取消了单独的接口和实现文件。所以它只有协议。

我意识到它是关于Java接口而不是C接口的,但差别很小(Java-8接口),所以应该是一样的。有点晚了,但这一个可能更合适:关于你的更新,Java和JavaScript是完全分开的。它们有不同的起源、不同的范式、不同的特征,并且运行在不同的环境中。“Java对于JavaScript就像火腿对于仓鼠一样。”@Chris true,我主要是说我的知识对于Java来说是不存在的,所以知道我可以用C来代替它是不可能的。我完全同意问题中添加的“更新”。我发现自己也处于类似的情况。