gpt4 book ai didi

c#-4.0 - .NET 4.0+ 中是否可以使用扩展方法扩展静态类?

转载 作者:行者123 更新时间:2023-12-04 20:53:16 25 4
gpt4 key购买 nike

我已经读到可以在 F# 中扩展静态类,尽管在 C# 中还不可能。提出了多种解决方法,因此建议这种类型的扩展可能相当有用。

尽管扩展方法被定义为静态,但它们适用于被扩展的类型实例。

因为没有什么让我认为它现在可用,我想知道现在是否可以使用 .NET 4.0+ 中的 C# 中的扩展方法语法扩展静态类?

最佳答案

在合理的 future ,在 C# 中使用扩展方法扩充静态类可能是不可能的,除非语言改变了扩展方法的声明方式。

想象一下,我们必须将此功能添加到语言中。扩展方法目前被定义为静态方法,它带有一个用 this 修饰的附加参数。关键词:

public class Foo
{
}

public static class ExtensionMethods
{
public static void ExtendFoo(this Foo foo, string bar)
{
}
}

在上面的代码中, this装饰器是唯一指示编译器处理 ExtendFoo() 的东西作为增加类的扩展方法 Foo .换句话说,我们无法去掉参数 foo , 将引用 Foo 的实例扩展方法将应用到的,即等效于 this如果该方法是本地的 Foo .问题是,静态类不能被实例化,那么我们要传入那个参数呢?

如果 Foo,我们可以解决问题并执行是静态的,那么编译器应该发出通过 null 的代码而不是 Foo 的实际实例(无论如何都不可能存在)。但这将是一个明显的困惑,并且可能不应该仅仅因为这个原因成为语言的一部分。期待 NullReferenceExceptions否则到处都是。

关于c#-4.0 - .NET 4.0+ 中是否可以使用扩展方法扩展静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com