我对为什么这起作用感到困惑:

namespace ConsoleApp2
{
   public class NameList
    {
        public void NameListGo()
        {
            List<string> listofNames = new List<string>();
            listofNames.Add("Frank");
        }
    }
}


但这会产生一个错误,在当前上下文中找不到“ listofNames”:

namespace ConsoleApp2
{
   public class NameList
    {
            List<string> listofNames = new List<string>();
            listofNames.Add("Frank");
    }
}


在这种情况下,方法“ NameListGo”的作用是什么。为了引用该实例的属性,必须在方法中包含一个实例吗? (我从一个漫长的周末开始学习C#,如果这是菜鸟问题,对不起)。

最佳答案

底线

这是因为listofNames.Add("Frank");是一条指令,如您在Methods (C# Programming Guide)中所见:


  在C#中,每个执行的指令都是在方法的上下文中执行的。




如何运作

在第一段中,listOfNames是局部变量。

在第二个片段listOfNames中作为成员变量。

更确切地说,在第二个片段中,listofNamesNameList类的一个字段。

public class NameList
{
       //This is a field
        List<string> listofNames = new List<string>();

       public void Method() {
          //You need a method to interact with listOfNames
          listofNames.Add("Frank");
       }

}


请签出What is the difference between a member variable and a local variable?

摘要

我推荐更多的教程-随着时间的推移,它会变得清晰起来。祝好运!

关于c# - C#关于列表实例和成员上下文的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52195789/

10-09 19:16