私はこのhttp://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspxを読んでいましたが、単に作成するのではなく、インターフェイスを使用することの違いや利点は何でしょうか。プロパティを持つクラスで、「using MyClass.cs
?」を介してクラスに追加します メソッドまたはプロパティクラスをインスタンス化する必要があるようです...
アドバイスありがとうございます。
私はこのhttp://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspxを読んでいましたが、単に作成するのではなく、インターフェイスを使用することの違いや利点は何でしょうか。プロパティを持つクラスで、「using MyClass.cs
?」を介してクラスに追加します メソッドまたはプロパティクラスをインスタンス化する必要があるようです...
アドバイスありがとうございます。
インターフェイスはそうではないので、インターフェイスのオブジェクトを使用できます。むしろ、それらのオブジェクトを作成する必要があるためです。
いくつかの異なるクラスがすべて同じインターフェースを実装しているため、特定の特性セットを共有している場合があります。たとえば、IEnumerable
インターフェイスを実装するすべてのタイプは、他に共通するものがなくても列挙できます。インターフェイスを使用すると、タイプが特定の機能をサポートするための制限の少ない方法が可能になります。
この2つがどのように似ているのかわかりません。インターフェイスは、クライアントによるコードの使用方法を定義します。usingキーワード(ファイル名ではなく名前空間名を続ける必要があります)を使用すると、毎回名前空間全体を接頭辞として付けることなく、その名前空間内のオブジェクトを使用できます。
より一般的な質問は、インターフェースの実装とクラスからの派生の違いは何ですか。多分それはあなたが尋ねようとしていたことです。その質問は他の場所でかなり広範囲にカバーされています。
インターフェイスには、ロジックの署名のみが含まれます。子クラスに完全に実装する必要があります。プロジェクトの名前空間とは異なる名前空間を含める場合は「using」句を使用しますが、クラスまたはインターフェイスが同じ名前空間にある場合は、「using」句を使用する必要はありません。
インターフェイスを使用して子クラスを継承し、コードをより柔軟にすることができます。
その例は次のとおりです。
public interface IClown
{
string FunnyThingIHave { get; }
void Honk();
}
public class TallGuy : IClown
{
public string FunnyThingIHave {
get { return "big shoes"; }
}
public void Honk() {
MessageBox.Show("Honk honk!");
}
}
public class Joker:IClown
{
public string FunnyThingIHave
{
get {return "I have a clown car"}
}
public void Honk()
{
MessageBox.Show("Honk Bonk");
}
}
public class FunnyClowns
{
Joker joker = new Joker();
TallGuy tguy = new TallGuy();
string WhichFunnyThingIWant(IClown clownType)
{
clownType.Honk();
}
}
これが行っているのは、ピエロインターフェイスを定義し、そのために2つの子クラスを定義すると、3番目のクラスがIClownのピエロタイプオブジェクトを動的に呼び出すことができます。これは単純な例ですが、この種のロジックは他の多くの状況に適用できます。ここで、インターフェイスが非常に役立ちます。これがお役に立てば幸いです。