如何编写允许编译以下代码的C#代码:
var date = 8.September(2013); // Generates a DateTime for the 8th of September 2013
Run Code Online (Sandbox Code Playgroud)
p.s*_*w.g 17
您可以使用扩展方法:
public static class MyExtensions
{
public static DateTime September(this int day, int year)
{
return new DateTime(year, 9, day);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这通常是不好的做法,我建议不要这样做,特别是对于像这样微不足道的事情 - new DateTime(2013, 9, 8)实际上要比这更难8.September(2013)吗?有时这种技巧可能对练习有用或有趣,但应该谨慎使用.
Mik*_*bel 14
我会建议不要这样,因为它让我觉得非常糟糕.也就是说,如果你真的想静态地这样做,你需要定义十二种不同的扩展方法(每个月名称一个),如下所示:
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...
}
Run Code Online (Sandbox Code Playgroud)
你可以通过扩展来做到这一点:
public static DateTime September(this int day, int year) {
return new DateTime(year, 9, day);
}
Run Code Online (Sandbox Code Playgroud)
当然,你需要12个这样的扩展,每个月一个.
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |