首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么C#导入只在命名空间内工作

为什么C#导入只在命名空间内工作
EN

Stack Overflow用户
提问于 2020-04-17 01:11:59
回答 2查看 134关注 0票数 0

我在一个3D团结项目中工作。

当我试图扩展或使用一个名为Ability的特殊类时,IDE强制我将名称空间添加到声明中,从而完成类的完整导入。

这不起作用(正常导入外部命名空间):

代码语言:javascript
复制
using CarlaFramework.Opsive.UltimateCharacterController.Scripts.Character.Abilities;


namespace CarlaFramework.uiMonitor {
      public abstract class DoozyViewAbilityMonitor : SerializedMonoBehaviour
      {
         private Ability currentAbility;
      }
}

这项工作(进口报关单):

代码语言:javascript
复制
protected CarlaFramework.Opsive.UltimateCharacterController.Scripts.Character.Abilities.Ability currentAbility;

这也起作用(导入内部命名空间声明):

代码语言:javascript
复制
namespace CarlaFramework.uiMonitor 
{

   using Opsive.UltimateCharacterController.Scripts.Character.Abilities;

   public abstract class DoozyViewAbilityMonitor : SerializedMonoBehaviour
   {
      private Ability currentAbility;
   }
}

代码图像:

https://imgur.com/QFDrUFR

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-17 02:33:54

问题是,我有一个名称空间,其名称与类名(Ability)相冲突。

当我试图声明Ability类型的变量时,我必须编写完整的命名空间,让IDE知道我指的是什么:

代码语言:javascript
复制
protected CarlaFramework.Opsive.UltimateCharacterController.Scripts.Character.Abilities.Ability currentAbility;

只要重命名名称空间,问题就解决了。

以下是名称冲突:

票数 2
EN

Stack Overflow用户

发布于 2020-04-17 02:02:38

第一个示例不是导入,而是类型的完全限定名。不能从类中导入这样的程序集引用。

using有两种不同的含义

  1. 作为指令,就像您试图使用它(导入名称空间)一样。见https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive。要点是不能(在类或结构中)内联地导入引用。
  2. 作为一个作用域块,它主要是(仅?)用于确保IDisposable调用它的Dispose()方法。请参阅https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61262579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档