ホームページ バックエンド開発 C#.Net チュートリアル C#インターフェース例を詳しく解説

C#インターフェース例を詳しく解説

Apr 24, 2017 pm 01:36 PM

1. C# インターフェイスの役割

使用法の概要: メソッドを含むインターフェイスを定義しますが、メソッドの特定の実装のためのコードはありません。次に、インターフェイスを継承するクラスで、インターフェイスのすべてのメソッドのコードを実装する必要があります。しかし、インターフェイスの役割をよく理解していない場合、インターフェイスを使用するのは不必要であると考えるのは、もちろん間違いです。インターフェースの役割については、インターネット上で、とても分かりやすく、しかも詳しく分析してくださった方がいらっしゃいます。

[csharp] view plain copy

<p></p><pre code_snippet_id="219991" snippet_file_name="blog_20140306_1_6634576" name="code" class="csharp">//我们定义一个接口  
public interface IBark    
{  
    void Bark();  
}
ログイン後にコピー

//別のクラスを定義し、IBark から継承し、その中に Bark() メソッドを実装する必要があります

public class Dog:IBark    
{  
    public Dog()  
    {}  
    public void Bark()  //实现其中的Bark()方法  
    {  
       Consol.write("汪汪");  
     }  
}
ログイン後にコピー

//次に、Dog のインスタンスを宣言して Bark() メソッドを呼び出しますDog Wangcai = new Dog ();

Wangcai .bark (); なぜインターフェイスを使用するのでしょうか? 実際の実装には Bark() がありません。では、インターフェースを使用する必要はないのでしょうか?

インターフェースの定義に関しては、インターフェースは実際にはクラス間の合意と制約です。 IBark インターフェイスを継承するすべてのクラスは Bark() メソッドを実装する必要があるため、クラス ユーザーの観点から見ると、クラスが IBark インターフェイスから継承していることがわかっていれば、Bark() メソッドを呼び出すことができます。 Bark() メソッドの実装方法に関係なく、自信を持って大胆に実行できます。たとえば、ユーザーが Cat クラスまたは Dog クラスを使用し、IBark から継承していることがわかっている場合は、Bark を直接呼び出すことができます。これら 2 つのクラスには Bark() メソッドの特定の実装が必要なので、クラス内の特定の実装を気にする必要はありません

設計の観点から見ると、複数のクラスを 1 つのクラス内に記述する必要があります。これらのクラスはより複雑であるため、作業負荷が比較的大きくなります。たとえば、プログラマ A は Dog クラスを定義し、プログラマ B は Cat クラスを作成します。この 2 つのクラスには何もありません。相互に関係しますが、ユーザーのニーズにより、両方に「呼び出し」メソッドを実装する必要があります。もう 1 つは、統合管理を容易にすることです。もちろん、インターフェイスを使用しなくても目的は達成できますが、このクラスに Duck クラスなどが存在する場合、この種の制約は避けられません。したがって、このメソッドはインターフェイスを介してより信頼性が高く、よりバインディングが高くなります

C# インターフェイス 簡単に言えば

私たちの会社には 2 種類のプログラマがいると仮定します: VB プログラマは VB でプログラムを書くプログラマを指します。 、 clsVBProgramer クラスで表されます。 Delphi プログラマは、 Delphi でプログラムを作成するプログラマを指し、 clsDelphiProgramer クラスで表されます。すべてのクラスには WriteCode() メソッドがあります。定義は次のとおりです: [csharp] view plain copy

class clsVBProgramer()  
{  
....  
WriteCode()  
{  
     //用VB语言写代码;  
}  
....  
}  
  
class clsDelphiProgramer()  
{  
....  
WriteCode()  
{  
    //用Delphi语言写代码;  
}  
   ....  
}
ログイン後にコピー

/*現在、会社にはプロジェクトがあり、プログラマにプログラムを作成する必要があります*/

class clsProject()  
{  
....  
WritePrograme(clsVBProgramer programer)//用VB写代码  
{  
    programer.WriteCode();  
}  
WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码  
{  
    programer.WriteCode();  
}  
......  
}
ログイン後にコピー

メイン プログラムでは次のように記述できます:

main()  
{  
   clsProject proj=new clsProject;  
   //如果需要用VB写代码  
   clsVBProgramer programer1=new clsVBProgramer;  
   proj.WritePrograme(programer1);  
   //如果需要用Delphi写代码  
   clsDelphiProgramer programer2=new clsDelphiProgramer;  
   proj.WritePrograme(programer2);  
}
ログイン後にコピー

しかし、この時点で別の C# プログラマーが会社に来たら、C# でプログラムを書く機能を実現できるように、このプログラムをどのように変更すればよいでしょうか?新しいクラス clsCSharpProgramer を追加すると同時に、この clsProject クラスで WritePrograme (clsCSharpProgramer プログラマー) メソッドを再度オーバーロードする必要があります。今度はさらにトラブルです。 C プログラマー、C++ プログラマー、および Java プログラマーがいる場合はどうなるでしょうか。大きな問題!

しかし、代わりにインターフェイスを使用すると、まったく異なります:

最初にプログラマ インターフェイスを宣言します:

interface IProgramer()
{
WriteCode();
}
ログイン後にコピー

次に 2 つのクラスを宣言し、IProgramer インターフェイスを実装します:

class clsVBProgramer():IProgramer{....WriteCode(){     //用VB语言写代码;}....}
class clsDelphiProgramer():IProgramer{....WriteCode(){    //用Delphi语言写代码;}   ....}
ログイン後にコピー

clsProject クラスにいくつかの変更を加えます:


class clsProject(){....WritePrograme(IProgramer programer){    programer.WriteCode();//写代码}......}
main(){   clsProject proj=new clsProject;   IProgramer programer;   //如果需要用VB写代码   programer=new clsVBProgramer;   proj.WritePrograme(programer);   //如果需要用Delphi写代码   programer=new clsDelphiProgramer;   proj.WritePrograme(programer);   }
ログイン後にコピー
C#、C、C++、JAVA などのプログラマーが追加された場合は、それらに関連するクラスを追加するだけで済み、main() に少し変更を加えれば OK です。特に拡張性が優れています!


さらに、clsProject クラスをコンポーネントに封印すると、ユーザーが機能を拡張する必要がある場合、それを実現するために外部に小さな変更を加えるだけで済み、変更する必要がなくなると言えます。コンポーネントはすでに密閉されています。とても便利で強力ではないでしょうか!

以上がC#インターフェース例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# を使用した Active Directory C# を使用した Active Directory Sep 03, 2024 pm 03:33 PM

C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# の乱数ジェネレーター C# の乱数ジェネレーター Sep 03, 2024 pm 03:34 PM

C# の乱数ジェネレーターのガイド。ここでは、乱数ジェネレーターの仕組み、擬似乱数の概念、安全な数値について説明します。

C# のアクセス修飾子 C# のアクセス修飾子 Sep 03, 2024 pm 03:24 PM

C# のアクセス修飾子のガイド。 C# のアクセス修飾子の種類について、例と出力とともに説明しました。

C# データ グリッド ビュー C# データ グリッド ビュー Sep 03, 2024 pm 03:32 PM

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

C# シリアル化 C# シリアル化 Sep 03, 2024 pm 03:30 PM

C# シリアル化のガイド。ここでは、C# シリアル化オブジェクトの導入、手順、作業、例についてそれぞれ説明します。

C# のパターン C# のパターン Sep 03, 2024 pm 03:33 PM

C# のパターンのガイド。ここでは、C# のパターンの概要と上位 3 種類について、その例とコード実装とともに説明します。

C# の素数 C# の素数 Sep 03, 2024 pm 03:35 PM

C# の素数ガイド。ここでは、C# における素数の導入と例を、コードの実装とともに説明します。

C# の階乗 C# の階乗 Sep 03, 2024 pm 03:34 PM

C# の Factorial のガイド。ここでは、C# での階乗の概要について、さまざまな例とコード実装とともに説明します。

See all articles