【问题标题】:The name 'temp' does not exist in the current context (C# desktop application)当前上下文中不存在名称“temp”(C# 桌面应用程序)
【发布时间】:2012-05-03 11:17:31
【问题描述】:

我正在使用以下代码制作 C# 桌面应用程序:

static class ClassA
{
     public static string Process()
     {
          string temp = Functions.Test();
          return temp;
     }
}

static class Functions
{
     public static string Test()
     {
          return "ok";
     }
}

问题是变量“temp”没有从 Test() 函数中获得任何值。当我尝试在即时窗口中检查其值时,我收到消息“当前上下文中不存在名称 'temp'”

ClassA 和 Functions 都在不同的类文件中,但属于同一个命名空间。

【问题讨论】:

  • 这些类是否在同一个程序集(项目)中?
  • 当您使用即时窗口时,您只能访问当前堆栈框架范围内的变量。使用调用堆栈窗口确保您在 Process() 框架中。
  • 它确实有效....你一定有其他问题
  • 我们能看到gui中的一些代码吗?

标签: c# static-classes


【解决方案1】:

我知道这是一个较老的问题,但希望这对新开发人员也有帮助:我遇到了一个类似的问题,并意识到我的两个类(位于两个不同的项目中)针对两个不同的框架。一旦我将它们切换到目标 Net Framework 4.5,它们就可以完美地编译并且没有这个问题。

【讨论】:

    【解决方案2】:

    我可以重现错误的唯一方法是检查

    ? temp
    

    在即时窗口中代码未运行时

    如果你调用实际方法

    ? ClassA.Process()
    

    效果很好。

    另外,如果你在return temp; 行放置一个断点并运行你的程序,立即窗口会在检查时给出正确的结果

    ? temp
    

    当调试器在你的断点处停止时。此时temp 在当前上下文中。

    【讨论】:

      【解决方案3】:

      试试

      static class ClassA
      {
       string temp = Functions.Test();
       public static string Process()
       {
            return temp;
       }
      }
      
      static class Functions
      {
       public static string Test()
       {
            return "ok";
       }
      }
      

      【讨论】:

        【解决方案4】:

        将以下内容添加到您的代码中:

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(ClassA.Process());
                Console.ReadLine();
            }
        }
        

        返回“确定”

        您的代码还有其他问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-30
          • 1970-01-01
          相关资源
          最近更新 更多