[英]C# - calling extension method without qualifying with class name, instance method syntax vs static syntax
[英]c# extension method to define method that behaves like a static class / type method, not an instance method
我在一个类中有这个静态方法:
public class MyTimeZoneHelperClass {
public static TimeZoneInfo EST = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
public static DateTime Convert_UTC_to_EST(this DateTime utcDateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, EST);
}
public static DateTime NowEST()
{
return DateTime.UtcNow.Convert_UTC_to_EST();
}
}
我只是去写一个扩展方法,比如我要命名为“EstNow”的 DateTime TYPE,这样我就可以像这段代码使用 DateTime.UtcNow 一样使用 DateTime.EstNow。 如果我有那个,我就不必引用上面的这个静态类 - MyTimeZoneHelperClass.NowEst - 我的代码会更干净一点,我不必记住那个类名/我更喜欢这里的一个类而不是两个.
所以扩展方法不能那样工作。 它们是静态方法,但是您需要一个类的实例来调用该方法 - 呃!
这可能吗? 我可以(最好是轻松地)让编译器识别类型上的新/自定义静态方法吗?
不,您不能编写“静态扩展”成员来扩展类型而不是类型的实例。 它只是不是 C# 的一部分。 已经讨论过了,将来可能会发生,尽管我认为它不在 C# 9 的预期功能列表中。
正如我们所说,在 c# github 上有一个未解决的问题: https : //github.com/dotnet/csharplang/issues/2505
开放意味着它尚未实施。 总结一下:
ldm 中没有人认为现在值得提倡这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.