この章では、2つのインターフェースを実装する例を見てみます。
しかも、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