为什么这个nam识别不了呀?

public static ArrayList nam = new ArrayList();
nam.Add("1");

img


编译器说nam在上下文中没有声明,这怎么搞

这涉及到C#语言的基础知识了,你这里声明的nam是一个静态字段,是类的成员。

C#中,类成员包含:

  • 字段
  • 属性
  • 方法
  • 索引
  • 委托
  • 事件
  • 嵌套类

C#中声明的字段需要在方法中访问或者使用,而不能直接作为类的成员使用。

这里我写了一个示例程序,希望对你有帮助:

using System;
using System.Collections;

namespace ConsoleApp1
{
    public class Program
    {
        public static ArrayList nam = new ArrayList();
        public static void Main(string[] args)
        {
            nam.Add("1");
            Console.WriteLine($"总数:{nam.Count}");
            Console.WriteLine($"第一个元素为:{nam[0]}");

            // 调用B类的Run方法
            B.Run();

            Console.ReadKey();
        }
    }

    public class B
    {
        public static void Run()
        {
            Console.WriteLine("从B类中访问Program类的nam数组元素...");
            Console.WriteLine($"访问到的第一个元素值为:{Program.nam[0]}");
        }
    }
}

运行结果:

总数:1
第一个元素为:1
从B类中访问Program类的nam数组元素...
访问到的第一个元素值为:1

我写了关于《C#程序设计基础(入门篇) 》教程,供参考:

img

或者将num定义在你问题中的Data类中,如下示例代码:

using System;
using System.Collections;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Data.Init();
            Console.WriteLine($"第一个元素为:{Data.nam[0]}");

            // 调用B类的Run方法
            B.Run();

            Console.ReadKey();
        }
    }

    public class Data
    {
        public static ArrayList nam = new ArrayList();
        public static void Init()
        {
            Console.WriteLine("准备初始化数组...");
            nam.Add("1");
            nam.Add("2");
            Console.WriteLine($"初始化完成,元素总数:{nam.Count}...");
        }
    }

    public class B
    {
        public static void Run()
        {
            Console.WriteLine("从B类中访问Data类的nam数组元素...");
            Console.WriteLine($"访问到的第一个元素值为:{Data.nam[0]}");
        }
    }
}

运行结果:

准备初始化数组...
初始化完成,元素总数:2...
第一个元素为:1
从B类中访问Data类的nam数组元素...
访问到的第一个元素值为:1

注:这里都是静态方法,你也可以使用非静态方法实现。