静的メソッドとインスタンスについて
静的メソッドからは、自分自身のインスタンスを呼び出せない。よく例にあげられるのが、Mainメソッドでのこと。
このように、静的メソッド内では、自分自身のインスタンスメソッドは呼び出せない。
// 静的メソッドとして定義 public static void Main(string[] args) { for(int feet=1; feet<=10; feet++) { // 静的メソッド内では、自身のインスタンスメソッドは呼び出せない double meter = FeetToMeter(feet); Console.WriteLine("{0} f = {1:0.0000}m", feet, meter); } } static double FeetToMeter(int feet) { return feet * 0.3048; }
インターフェイスの考え方
public class List
List
なお、.NET Frameworkが提供しているインターフェイスには接頭辞Iが付いている。
インターフェイスの基本的な考えとして
・AクラスがIXインターフェイスを実装していると、AオブジェクトはIX型の変数に代入できる。
・IX型の変数は、IXインターフェイスが定義するプロパティ、メソッドが使える。
・プロパティやメソッドの具体的な動作は、IXインターフェイスではなく、Aクラスに実装されている。
上を例で示す。
List<int> list = new List<int>() {1, 2, 3, 4, 5 }; // Listクラスは、IColliction<T>のインターフェイスを持っているので変数に代入できる ICollection<T> collection = list; // collection変数は、ICollection<T>型のプロパティやメソッドが使える var count = collection.Count; collection.Add(6);
また、別の例として
// これだと、List<T>しか受け付けていない private List<Sale> _sales; // インターフェイスに変えると、IEnumerable<T>を実装しているすべてのクラスが使える private IEnumerable<Sale> _sales;
暗黙の型指定varの使い方
List<Sale> sales = new List<Sale>(); // varを使ってかくと var sales = new List<Sale>();