11

次のコードをコンパイルできる C# コードを作成するにはどうすればよいですか :

var date = 8.September(2013); // Generates a DateTime for the 8th of September 2013
4

4 に答える 4

17

拡張メソッドを使用できます。

public static class MyExtensions
{
    public static DateTime September(this int day, int year)
    {
        return new DateTime(year, 9, day);
    }
}

ただし、これは一般的に悪い習慣であり、特にこのような些細なことの場合は、この種のことをしないことをお勧めしnew DateTime(2013, 9, 8)ます8.September(2013)。この種のトリックは、練習に役立つ場合や楽しい場合がありますが、慎重に使用する必要があります。

于 2013-06-20T21:29:00.063 に答える
14

スタイルが非常に悪いと思うので、これはお勧めしません。とはいえ、これを本当に静的に行いたい場合は、次のように 12 の異なる拡張メソッド (月名ごとに 1 つ) を定義する必要があります。

public static class DateConstructionExtensions
{
    public static DateTime January(this int day, int year)
    {
        return new DateTime(year, /* month: */1, day);
    }

    // equivalent methods for February, March, etc...
}
于 2013-06-20T21:31:21.540 に答える
8

拡張機能を介してこれを行うことができます:

public static DateTime September(this int day, int year) {
    return new DateTime(year, 9, day);
}

もちろん、毎月 1 つずつ、合計 12 の拡張機能が必要です。

于 2013-06-20T21:29:11.987 に答える