ylbtech-LanguageSamples-ExplicitInterface(显示接口)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ExplicitInterface(显示接口)

 

1.A,示例(Sample) 返回顶部

显式接口 实现示例

本示例演示了如何显式地实现接口成员以及如何从接口实例访问这些成员。有关背景信息,请参见接口(C# 编程指南).

安全说明

提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。

在 Visual Studio 中生成并运行“显式接口实现”示例

  1. 在“解决方案资源管理器”中,右击“ExplicitInterface1”项目并单击“设为启动项目”。

  2. 在“调试”菜单上,单击“开始执行(不调试)”。

  3. 对 ExplicitInterface2 重复前面这些步骤。

从命令行生成并运行“显式接口实现”示例

  1. 使用“更改目录”命令转到“ExplicitInterface1”目录。

  2. 键入以下命令:

    csc explicit1.cs
    explicit1
  3. 使用“更改目录”命令转到“ExplicitInterface2”目录。

  4. 键入以下命令:

    csc explicit2.cs
    explicit2
1.B,示例代码1(Sample Code)返回顶部

1.B.1, explicit1.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
//  Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。

// explicit1.cs
interface IDimensions 
{
   float Length();
   float Width();
}

class Box : IDimensions 
{
   float lengthInches;
   float widthInches;

   public Box(float length, float width) 
   {
      lengthInches = length;
      widthInches = width;
   }
   // 显式接口成员实现:
   float IDimensions.Length() 
   {
      return lengthInches;
   }
   // 显式接口成员实现:
   float IDimensions.Width() 
   {
      return widthInches;      
   }

   public static void Main() 
   {
      // 声明类实例“myBox”:
      Box myBox = new Box(30.0f, 20.0f);
      // 声明接口实例“myDimensions”:
      IDimensions myDimensions = (IDimensions) myBox;
      // 打印出盒子的尺寸:
      /* 下列注释行将产生编译 
         错误,因为这些行尝试从类实例访问显式实现的
         接口成员:                    */
      //System.Console.WriteLine("Length: {0}", myBox.Length());
      //System.Console.WriteLine("Width: {0}", myBox.Width());
      /* 从接口的实例调用方法,
         以打印出盒子的尺寸:                         */
      System.Console.WriteLine("Length: {0}", myDimensions.Length());
      System.Console.WriteLine("Width: {0}", myDimensions.Width());
   }
}
View Code

1.B.2,

1.B,示例代码2(Sample Code)返回顶部

1.B.1, explicit2.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。

// explicit2.cs
// 声明英制单位接口:
interface IEnglishDimensions 
{
   float Length();
   float Width();
}
// 声明公制单位接口:
interface IMetricDimensions 
{
   float Length();
   float Width();
}
// 声明实现以下两个接口的“Box”类:
// IEnglishDimensions 和 IMetricDimensions:
class Box : IEnglishDimensions, IMetricDimensions 
{
   float lengthInches;
   float widthInches;
   public Box(float length, float width) 
   {
      lengthInches = length;
      widthInches = width;
   }
// 显式实现 IEnglishDimensions 的成员:
   float IEnglishDimensions.Length() 
   {
      return lengthInches;
   }
   float IEnglishDimensions.Width() 
   {
      return widthInches;      
   }
// 显式实现 IMetricDimensions 的成员:
   float IMetricDimensions.Length() 
   {
      return lengthInches * 2.54f;
   }
   float IMetricDimensions.Width() 
   {
      return widthInches * 2.54f;
   }
   public static void Main() 
   {
      // 声明类实例“myBox”:
      Box myBox = new Box(30.0f, 20.0f);
      // 声明英制单位接口的实例:
      IEnglishDimensions eDimensions = (IEnglishDimensions) myBox;
      // 声明公制单位接口的实例:
      IMetricDimensions mDimensions = (IMetricDimensions) myBox;
      // 以英制单位打印尺寸:
      System.Console.WriteLine("Length(in): {0}", eDimensions.Length());
      System.Console.WriteLine("Width (in): {0}", eDimensions.Width());
      // 以公制单位打印尺寸:
      System.Console.WriteLine("Length(cm): {0}", mDimensions.Length());
      System.Console.WriteLine("Width (cm): {0}", mDimensions.Width());
   }
}
View Code

1.B.2,

1.C,下载地址(Free Download)返回顶部
warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/ylbtech/p/4196994.html