C#关于列表实例和成员上下文的困惑

时间:2018-09-06 02:46:41

标签: c# list

我对为什么这样做感到困惑:

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#,如果这是菜鸟问题,对不起。)

1 个答案:

答案 0 :(得分:5)


底线

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

  

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


如何使其工作

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

在第二个摘录listOfNames中作为成员变量。

更准确地说,在第二个片段listofNames中是NameList类的一个字段。

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?

摘要

我推荐更多教程-随着时间的流逝,它将变得更加清晰。祝你好运!