第57章 インターフェース その2


この章では、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; }
では、実行結果を見てみましょう。




[C# Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 02/Oct/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。