【问题标题】:"A namespace cannot directly contain members such as fields or methods" [closed]“命名空间不能直接包含字段或方法等成员”[关闭]
【发布时间】:2014-02-06 04:28:11
【问题描述】:

我正在尝试使用 Reflexil 将此代码用于 NET.reflector。我正在尝试用以下代码替换代码:

if(Input.GetKeyDown(KeyCode.Keypad5)) { 
int i = 0; 
Character localPlayer = PlayerClient.GetLocalPlayer().controllable.GetComponent<Character>(); 
foreach (UnityEngine.Object obj2 in UnityEngine.Object.FindObjectsOfType(typeof(LootableObject))) 
{ 
    if (obj2 != null) 
    { 
        i++; 
        LootableObject loot = (LootableObject) obj2; 
        Debug.Log("Loot "+i+": "+loot.transform.position.ToString()); 
        CCMotor ccmotor = localPlayer.ccmotor; 
        if(ccmotor != null && tpPos1 != Vector3.zero) { 
            ccmotor.Teleport(loot.transform.position); 
            Notice.Popup("", "Teleported to "+loot.name, 1.5f); 
        } 
        break; 
    } 
} 

}

但是当我尝试编译时它给了我一个错误:

Line: 1 Column: 1 Error Number: CS0116  Error Message: "A namespace does not directly contain members such as fields or methods"

我认为这是 Unity 代码。我没那么有经验。谁能帮我解决这个问题?或者告诉我该怎么做?谢谢!

【问题讨论】:

  • 它需要在一个类里面......
  • 并且可能在该类的方法中。
  • 有人能解释一下我需要用这段代码做什么吗?就像我说的,我没有那么有经验。你看,这不是我自己写的。如果脚本本身有任何问题或需要移动,我只需要帮助。

标签: c# button unity3d keycode reflexil


【解决方案1】:

您显示的 sn-p 似乎并不直接导致错误。

这是导致错误的原因:

namespace MyNameSpace
{
   int i; <-- THIS NEEDS TO BE INSIDE THE CLASS

   class MyClass
   {
      ...
   }
}

如果您没有立即看到类“外部”是什么,这可能是由于} 放错位置或多余的右括号。

【讨论】:

  • 谢谢,只是需要提示,不管是不是代码。谢谢!
  • 这很有帮助,因为它让我“看到”我的类右括号在我的方法的开头上方。我刚开始使用 Visual Studio 2017,它会自动添加两个括号,特别是在开头旁边添加右括号 - 我不习惯(使用 VS 2008 多年后),甚至没有注意到我没有在类中编写方法!
  • 对我来说,解决方案是先删除表并将其添加回 EF 模型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多