以下のエディターは、インターフェイス オブジェクトをインスタンス化する方法に関する記事 C# を提供します。編集者はこれがとても良いと思ったので、参考として共有します。エディターに従って見てみましょう
head first デザイン パターンでは非常に多くのインターフェイス オブジェクトが使用されています
まず、インターフェイスはオブジェクトを宣言するだけでなく、オブジェクトをインスタンス化することもできるという問題を明確にしましょう。パラメータとして渡すこともできます。
1. インターフェースコールバック
これは継承における上方変換です。親クラス FL=new subclass (); ただし、ここでの親クラスはインターフェイス インターフェイスです。 (個人的にはクラスのオーバーライドでもインターフェースの書き換えでも使い方は同じだと思っています)
あるインターフェースを実装したクラスが作成したオブジェクトの参照を、そのインターフェースで宣言したインターフェース変数に代入することで、インターフェイス変数は、クラスによって実装されたインターフェイス内のメソッドを呼び出すことができます。実際、インターフェース変数がクラスによって実装されたインターフェースのメソッドを呼び出すと、対応するオブジェクトにインターフェースのメソッド
をコード内で直接呼び出すように通知されます
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { interface Itemp { double plus(); } public class num : Itemp { double aa, bb; public num(double a, double b) { this.bb = b; this.aa = a; } public double plus() { return (aa * bb); } } class Program { static void Main(string[] args) { num n = null;//声明类对象引用 Itemp tm = null;//声明接口对象引用 tm = new num(1.1, 2.2);//接口回调(向上转型) Console.WriteLine(tm.plus()); Console.ReadKey(); } } }
上記の例を通して、それは難しいことではありませんインターフェイス オブジェクトのインスタンス化が、実際にはそのメソッドを実装するクラス内のすべてのメソッドを指す参照としてのインターフェイス オブジェクトであることがわかります。これは、C++ の 関数ポインター に非常に似ています (C# のデリゲートに似ています)。 , しかし、それには違いがあります。 C# のインターフェイス オブジェクトのインスタンス化は実際には 1 対多ですが、C++ の関数ポインターは 1 対 1 です。
ただし、インターフェイス オブジェクトのインスタンス化は、それを実装するクラスでインスタンス化する必要があり、インターフェイス自体でインスタンス化することはできないことに注意してください。 C# では、インターフェイス自体を使用して独自のオブジェクトをインスタンス化することはできません。
以上がC# でインターフェイス オブジェクトをインスタンス化する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。