【问题标题】:That name doesn"t exist in the current context error该名称在当前上下文中不存在错误
【发布时间】:2014-10-11 14:15:32
【问题描述】:

public static void ammount() 中,我收到一条错误消息: “当前上下文中不存在名称‘mps’” 如何修复此错误?

   struct mp3players{

        private int ID;
        private string Make;
        private string Model;
        private int MBSize;
        private double Price;
        private int vr;

        public int id
        {
            get { return this.ID; }
            set { this.ID = value; }
        }

        public string make
        {
            get { return this.Make; }
            set { this.Make = value; }
        }

        public string model
        {
            get { return this.Model; }
            set { this.Model = value; }
        }

        public int mbsize
        {
            get { return this.MBSize; }
            set { this.MBSize = value; }
        }

        public double price
        {
            get { return this.Price; }
            set { this.Price = value; }
        }

        public int VR
        {
            get { return this.vr; }
            set { this.vr = value; }
        }

    }
   public static void mp3()
    {
        mp3players mp1 = new mp3players();
        mp1.id = 1;
        mp1.make = "GET technologies .inc";
        mp1.model = "HF 410 ";
        mp1.mbsize = 4096;
        mp1.price = 129.95;
        mp1.VR = 500;

        mp3players mp2 = new mp3players();
        mp2.id = 2;
        mp2.make = "Far & Loud";
        mp2.model = "XM 600 ";
        mp2.mbsize = 8192;
        mp2.price = 224.95;
        mp2.VR = 500;

        mp3players mp3 = new mp3players();
        mp3.id = 3;
        mp3.make = "Innotivative";
        mp3.model = "Z3 ";
        mp3.mbsize = 512;
        mp3.price = 79.95;
        mp3.VR = 500;

        mp3players mp4 = new mp3players();
        mp4.id = 4;
        mp4.make = "Resistance S.A.";
        mp4.model = "3001 ";
        mp4.mbsize = 4096;
        mp4.price = 124.95;
        mp4.VR = 500;

        mp3players mp5 = new mp3players();
        mp5.id = 5;
        mp5.make = "CBA";
        mp5.model = "NXT volume ";
        mp5.mbsize = 2048;
        mp5.price = 159.05;
        mp5.VR = 500;

       ArrayList mps = new ArrayList();
        mps.Add(mp1);
        mps.Add(mp2);
        mps.Add(mp3);
        mps.Add(mp4);
        mps.Add(mp5);

        foreach (mp3players value in mps)
        {
            Console.WriteLine("ID: " + value.id);
            Console.WriteLine("Make: " + value.make);
            Console.WriteLine("Model: " + value.model);
            Console.WriteLine("MBSize: " + value.mbsize);
            Console.WriteLine("Price: " + value.price);
            Console.WriteLine();
        }
    }

这是发生错误的地方。

我尝试了几种方法,但没有找到我要搜索的内容。

   public static void ammount()
    {
        foreach (mp3players value in mps)
        {
            Console.WriteLine("ID: " + value.id);
            Console.WriteLine("Model: " + value.model);
            Console.WriteLine();
        }
    }

我不是很擅长C#,所以也非常欢迎解释我做错了什么!

【问题讨论】:

  • 你应该展示你到目前为止所尝试的。此外,您的标题没有提供信息,不会让任何人知道问题所在。 (顺便说一句,我没有投反对票,因为我认为这个问题可以解决。)
  • 变量mp3是局部变量,其他函数无法访问。
  • @WonHyoungLee,你的意思是mps
  • @ArindamNayak 哦,是的。我的错。

标签: c# arraylist struct scope


【解决方案1】:
public static void ammount()
{
    foreach (mp3players value in mps)
    {
        Console.WriteLine("ID: " + value.id);
        Console.WriteLine("Model: " + value.model);
        Console.WriteLine();
    }
}

这段代码知道mps

您将在方法中添加一个参数,使public static void ammount() 看起来像public static void ammount(mp3players[] mps)。这将修复此错误但会导致另一个错误

您必须将 mps 传递给方法。

【讨论】:

    【解决方案2】:

    mpsmp3() 方法中的局部变量。它不是全局变量,因此在ammount() 方法中无法访问。

    【讨论】:

      【解决方案3】:

      我明白你的意思,你得到编译错误The name 'mps' does not exist in the current context。因此,要解决此问题,您必须将 mps 设为全局变量并在 mp3() 方法中设置该值,并在其他方法中使用该值。

      结构 mp3players {

              private int ID;
              private string Make;
              private string Model;
              private int MBSize;
              private double Price;
              private int vr;
      
              public int id
              {
                  get { return this.ID; }
                  set { this.ID = value; }
              }
      
              public string make
              {
                  get { return this.Make; }
                  set { this.Make = value; }
              }
      
              public string model
              {
                  get { return this.Model; }
                  set { this.Model = value; }
              }
      
              public int mbsize
              {
                  get { return this.MBSize; }
                  set { this.MBSize = value; }
              }
      
              public double price
              {
                  get { return this.Price; }
                  set { this.Price = value; }
              }
      
              public int VR
              {
                  get { return this.vr; }
                  set { this.vr = value; }
              }
      
          }
          private static ArrayList  mps;
          public static void mp3()
          {
              mp3players mp1 = new mp3players();
              mp1.id = 1;
              mp1.make = "GET technologies .inc";
              mp1.model = "HF 410 ";
              mp1.mbsize = 4096;
              mp1.price = 129.95;
              mp1.VR = 500;
      
              mp3players mp2 = new mp3players();
              mp2.id = 2;
              mp2.make = "Far & Loud";
              mp2.model = "XM 600 ";
              mp2.mbsize = 8192;
              mp2.price = 224.95;
              mp2.VR = 500;
      
              mp3players mp3 = new mp3players();
              mp3.id = 3;
              mp3.make = "Innotivative";
              mp3.model = "Z3 ";
              mp3.mbsize = 512;
              mp3.price = 79.95;
              mp3.VR = 500;
      
              mp3players mp4 = new mp3players();
              mp4.id = 4;
              mp4.make = "Resistance S.A.";
              mp4.model = "3001 ";
              mp4.mbsize = 4096;
              mp4.price = 124.95;
              mp4.VR = 500;
      
              mp3players mp5 = new mp3players();
              mp5.id = 5;
              mp5.make = "CBA";
              mp5.model = "NXT volume ";
              mp5.mbsize = 2048;
              mp5.price = 159.05;
              mp5.VR = 500;
      
              mps = new ArrayList();
              mps.Add(mp1);
              mps.Add(mp2);
              mps.Add(mp3);
              mps.Add(mp4);
              mps.Add(mp5);
      
              foreach (mp3players value in mps)
              {
                  Console.WriteLine("ID: " + value.id);
                  Console.WriteLine("Make: " + value.make);
                  Console.WriteLine("Model: " + value.model);
                  Console.WriteLine("MBSize: " + value.mbsize);
                  Console.WriteLine("Price: " + value.price);
                  Console.WriteLine();
              }
          }
          public static void ammount()
          {
              foreach (mp3players value in mps)
              {
                  Console.WriteLine("ID: " + value.id);
                  Console.WriteLine("Model: " + value.model);
                  Console.WriteLine();
              }
          }
      

      【讨论】:

        【解决方案4】:

        在函数 public static void mp3() 中声明的变量“mps”,您正试图从另一个函数 public static void ammount() 访问该变量,但由于范围的原因,这是不可行的。

        要访问“mps”,您必须从 mp3() 函数中删除声明并将其直接移动到您定义的类中:

        public class MySongColl
        {
           private static ArrayList mps = new ArrayList();
        
            struct mp3players
            {
               ....
               .... 
            }
        
            public static void mp3()
            {
                ....
                ....
            }
        
            public static void ammount()
            {
                ....
                ....
            }
        }
        

        注意: 在编写代码时使用正确的命名约定。例如:函数名称 ammount() 中的拼写错误应该是 amount()。并在声明 struct mp3players 之类的名称时使用驼峰式大小写应该是 Mp3Players 等。这些不是构建代码所必需的,但对于开发人员来说是必不可少的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-09-12
          • 1970-01-01
          • 1970-01-01
          • 2014-05-05
          相关资源
          最近更新 更多