C# 如何修复名称';名称'&';价值';在当前上下文中不存在

C# 如何修复名称';名称'&';价值';在当前上下文中不存在,c#,C#,我是C#的新手,我完成了一项任务,在这项任务中,我们必须创建计数器类,并使用它来创建和使用计数器对象。我遇到了一个无法解决的错误 当前上下文中不存在名称“name”和“Value” 我必须告诉控制台,用“{0}是{1}”的格式写一行,以及向c询问其名称的结果和向c询问其值的结果 我有一种感觉,它与名称和值的范围有关,但经过多次尝试,我仍然无法找出我的错误所在 文件名Program.cs namespace CounterTest { public class MainClass {

我是C#的新手,我完成了一项任务,在这项任务中,我们必须创建计数器类,并使用它来创建和使用计数器对象。我遇到了一个无法解决的错误 当前上下文中不存在名称“name”和“Value”

我必须告诉控制台,用“{0}是{1}”的格式写一行,以及向c询问其名称的结果和向c询问其值的结果

我有一种感觉,它与名称和值的范围有关,但经过多次尝试,我仍然无法找出我的错误所在

文件名Program.cs

namespace CounterTest
{
   public class MainClass
    {
        private static void PrintCounters(Counter[] counters)
        {
            foreach ( Counter c in counters) 
            {
                Console.WriteLine("Name is: {0} Value is: {1}", Name, Value);
            } **** Where I am receiving the error                ^      ^

        }
       public static void Main(string[] args)
        {

        }
    }
}
文件名Class1.cs

namespace CounterTest
{
    public class Counter
    {
        private int _count;
        public int Value
        {
            get
            {return _count;}
        }
        private string _name;
        public string Name
        {
           get
            {return _name;}
            set
            { _name = value; }
        }

        public Counter(string Name)
        { _name = Name;
          _count = 0;}

        public void Increment()
        {
            _count = _count + 1; 
        }
        public void Reset()
        {
            _count = 0;
        }
    }
}
感谢您提供的任何帮助。

更改

Console.WriteLine("Name is: {0} Value is: {1}", Name, Value);

您还可以使用C#6或更高版本中提供的字符串插值,如下所示:

Console.WriteLine($"Name is: {c.Name} Value is: {c.Value}");
改变

Console.WriteLine("Name is: {0} Value is: {1}", Name, Value);

您还可以使用C#6或更高版本中提供的字符串插值,如下所示:

Console.WriteLine($"Name is: {c.Name} Value is: {c.Value}");

由于使用了foreach循环,因此可以通过使用点操作符轻松地使用对象属性

比如说

  foreach ( Counter c in counters) 
        {
            Console.WriteLine("Name is: {0} Value is: {1}", c.Name, c.Value);
        } 
或者可以使用字符串插值以提高可读性

foreach ( Counter c in counters) 
        {
            Console.WriteLine($"Name is: {c.Name} Value is: {c.Value}");
        }

由于使用了foreach循环,因此可以通过使用点操作符轻松地使用对象属性

比如说

  foreach ( Counter c in counters) 
        {
            Console.WriteLine("Name is: {0} Value is: {1}", c.Name, c.Value);
        } 
或者可以使用字符串插值以提高可读性

foreach ( Counter c in counters) 
        {
            Console.WriteLine($"Name is: {c.Name} Value is: {c.Value}");
        }

问题是,您没有在代码中指定“名称”和“值”的来源,这就是为什么会出现该错误

foreach ( Counter c in counters) 
{
    Console.WriteLine("Name is: {0} Value is: {1}", Name, Value);
}

在foreach循环中,从“counters”数组中获取单个“c”元素。之后,您应该通过编写“c.Name”和“c.Value”来指定“Name”和“Value”是“c”的属性。

问题在于您没有在代码中指定“Name”和“Value”的来源,这就是为什么会出现该错误

foreach ( Counter c in counters) 
{
    Console.WriteLine("Name is: {0} Value is: {1}", Name, Value);
}

在foreach循环中,从“counters”数组中获取单个“c”元素。然后你应该通过写“c.Name”和“c.Value”来指定“Name”和“Value”是“c”的属性。

你在开玩笑吧,就是这么简单。非常感谢,这已经解决了我的问题。如果可能的话,我一定会接受你的回答。@TKeys23我们有时会错过一些小事情,这就是为什么SO在这里帮助我们所有人!很高兴我能帮上忙。有一个想法,@TKeys23似乎是新的贡献者,如果你能解释为什么要用
c.
而不是
Name
Value
的话,它会在你的答案上加糖。你在开玩笑吧,就是这么简单。非常感谢,这已经解决了我的问题。如果可能的话,我一定会接受你的回答。@TKeys23我们有时会错过一些小事情,这就是为什么SO在这里帮助我们所有人!很高兴我能帮上忙。一个想法,@TKeys23似乎是一个新的贡献者,如果你能解释为什么要使用
c而不是
Name
Value
,它会给你的答案增加甜头。这个答案解释了为什么在foreach循环中使用
c
。这个答案解释了为什么在foreach循环中使用
c