static using 无法识别方法名称,表示该名称在当前上下文中不存在

static using doesn't recognize method name, saying the name does not exist in the current context

提问人:rory.ap 提问时间:2/22/2020 更新时间:2/22/2020 访问量:164

问:

请注意:我知道已经回答了类似的问题。我花了一段时间才找到这个问题/答案,因为它假设我认识到它特别涉及扩展方法,而我一开始并没有。我错误地认为该功能只能与扩展方法一起使用,因此由于它被认为是多余的,我在搜索时没有将其包括在内。static using

这篇文章的目的是帮助那些不认识这一点的人。


我有一些代码,其中包含 C# 6 中引入的代码:using static directive

using static MyNs.MyExtensionMethods;

我正在尝试使用中定义的扩展方法,并且它有效(一如既往):MyNs.MyExtensionMethods

foo.MyExtensionMethod();

但这并不意味着:

MyExtensionMethod(foo);

我收到编译器错误“当前上下文中不存在名称'MyExtensionMethod'”。这是怎么回事?

C# .NET 静态 扩展方法 using 指令

评论


答:

1赞 rory.ap 2/22/2020 #1

此答案所示,您不能使用该指令来允许对扩展方法的非限定访问,而只能允许对常规静态方法的访问(即在第一个参数上没有关键字)。原因在回答中已经明确说明,所以我不会在这里重复。using staticthis