次のコードをコンパイルできる C# コードを作成するにはどうすればよいですか :
var date = 8.September(2013); // Generates a DateTime for the 8th of September 2013
拡張メソッドを使用できます。
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)
。この種のトリックは、練習に役立つ場合や楽しい場合がありますが、慎重に使用する必要があります。
スタイルが非常に悪いと思うので、これはお勧めしません。とはいえ、これを本当に静的に行いたい場合は、次のように 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...
}
拡張機能を介してこれを行うことができます:
public static DateTime September(this int day, int year) {
return new DateTime(year, 9, day);
}
もちろん、毎月 1 つずつ、合計 12 の拡張機能が必要です。