本示例声明一个接口IDimensions
和一个类 Box
,显式实现了接口成员 GetLength
和 GetWidth
。 通过接口实例 dimensions
访问这些成员。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
interface IDimensions { float GetLength(); float GetWidth(); } class Box : IDimensions { float lengthInches; float widthInches; Box( float length, float width) { lengthInches = length; widthInches = width; } // Explicit interface member implementation: float IDimensions.GetLength() { return lengthInches; } // Explicit interface member implementation: float IDimensions.GetWidth() { return widthInches; } static void Main() { // Declare a class instance box1: Box box1 = new Box(30.0f, 20.0f); // Declare an interface instance dimensions: IDimensions dimensions = box1; // The following commented lines would produce compilation // errors because they try to access an explicitly implemented // interface member from a class instance: //System.Console.WriteLine("Length: {0}", box1.GetLength()); //System.Console.WriteLine("Width: {0}", box1.GetWidth()); // Print out the dimensions of the box by calling the methods // from an instance of the interface: System.Console.WriteLine( "Length: {0}" , dimensions.GetLength()); System.Console.WriteLine( "Width: {0}" , dimensions.GetWidth()); } } /* Output: Length: 30 Width: 20 */ |
可靠编程
-
请注意,注释掉了
Main
方法中以下行,因为它们将产生编译错误。 显式实现的接口成员不能从类实例访问:
1
2
|
//System.Console.WriteLine("Length: {0}", box1.GetLength()); //System.Console.WriteLine("Width: {0}", box1.GetWidth()); |
-
另请注意
Main
方法中的以下行成功输出了框的尺寸,因为这些方法是从接口实例调用的:
1
2
|
System.Console.WriteLine( "Length: {0}" , dimensions.GetLength()); System.Console.WriteLine( "Width: {0}" , dimensions.GetWidth()); |
以上就是c#如何显式实现接口成员的详细内容,更多关于c# 显式实现接口成员的资料请关注服务器之家其它相关文章!
原文链接:https://github.com/dotnet/docs.zh-cn/blob/live/docs/csharp/programming-guide/interfaces/how-to-explicitly-implement-interface-members.md