インターフェイスがインスタンスを作成できません。 しかし、このコードは動作します。インタフェースの概要?このコードはどのように動作しますか?
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
このコードは、インスタンスのインターフェイスを作成する意味ではありませんか? どのように動作しますか?
インターフェイスがインスタンスを作成できません。 しかし、このコードは動作します。インタフェースの概要?このコードはどのように動作しますか?
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
このコードは、インスタンスのインターフェイスを作成する意味ではありませんか? どのように動作しますか?
文字列配列がインスタンスです。そのインタフェースを実装するだけです。
いいえ使用しているnew[]
表現は、IEnumerable<string>
というインタフェースを実装するクラスstring[]
のインスタンスを作成します。
=
の右側の式はIEnumerable<string>
を実装する文字列配列string[]
のインスタンスを作成し、インスタンスは、そのタイプIEnumerable<string>
あるmyStr
という名前の変数に割り当てられています。インスタンスのタイプはstring[]
ですが、IEnumerable<string>
のように動作します。
あなたはインターフェイスリファレンスに文字列配列を割り当てていませんでした。これはインターフェイスのインスタンスではなく、実際にはインターフェイスのインスタンスを初期化できません。
以下のコードはmyStr
の実際のタイプを出力します。側として
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
Console.WriteLine(myStr.GetType());
は、あなたがそのインターフェイスのリファレンスへのインタフェースを実装するクラスのインスタンスを割り当てることができますし、それは我々が
polymorphismと呼んでいます。