しかも、2つのインターフェースには同じ名前のメソッドが含まれています。
// interface02.cs using System; public interface IDateCalc1 { DateTime CalcDate(DateTime dt, TimeSpan ts, string h); } public interface IDateCalc2 { DateTime CalcDate(DateTime dt, int n); } class MyCalcDate : IDateCalc1, IDateCalc2 { public DateTime CalcDate(DateTime d, TimeSpan t, string s) { if (s == "+") return d + t; else if (s == "-") return d - t; else return DateTime.Now; } public DateTime CalcDate(DateTime d, int n) { return d.AddHours((double)n); } } class interface02 { public static void Main() { MyCalcDate cd = new MyCalcDate(); DateTime dt = DateTime.Today; TimeSpan ts = new TimeSpan(100, 0, 0, 0); Console.WriteLine("今日から100日後は{0}です", cd.CalcDate(dt, ts, "+").ToString("D")); Console.WriteLine("今日の100日前は{0}です", cd.CalcDate(dt, ts, "-").ToString("D")); dt = DateTime.Now; ts = new TimeSpan(100, 0, 0); Console.WriteLine("今から100時間後は{0}です", cd.CalcDate(dt, ts, "+").ToString("F")); Console.WriteLine("今から100時間前は{0}です", cd.CalcDate(dt, ts, "-").ToString("F")); Console.WriteLine("今から10時間後は{0}です", cd.CalcDate(dt, 10).ToString("F")); } }IDateCalc1とIDateCalc2には、CalcDateというメソッドが含まれています。 でも、シグニチャが異なるので大丈夫でしょう。
MyCalcDateクラスは、この2つのインターフェイスを実装しています。
引数を2つ持つCalcDateメソッドの実装を見てください。DateTime構造体のAddHoursメソッドを利用しています。
public DateTime AddHours ( double value )このインスタンスの日時にvalueで表された時間を加えたDateTime値を返します。
同じようなメソッドに次のようなものがあります。
public DateTime AddMinutes ( double value ) public DateTime AddSeconds ( double value ) public DateTime AddMilliseconds ( double value ) public DateTime AddDays ( double value ) public DateTime AddMonths ( int months ) public DateTime AddYears ( int value )Mainメソッドを見ると
DateTime.Todayとあります。これは、本日の日付を取得するプロパティです。
public static DateTime Today { get; }では、実行結果を見てみましょう。
Update 02/Oct/2006 By Y.Kumei