需要对象引用C#CS0120

时间:2017-11-19 09:56:13

标签: c# variables methods

这个问题已被要求死亡,但我不能从这些答案中得出我的问题所在。

我想做的就是:

  1. 声明我的全局bool变量(稍后用作标志。)
  2. 运行我的方法进行检查,其中将更改全局变量
  3. 任何人都能解释为什么这不起作用?感谢。

        class Program
        {
            public bool onVPN;
    
             static void Main(string[] args)
            {
                CheckVPN();
                CheckIfInternal();
                Console.WriteLine("Press enter to close...");
                Console.ReadLine();
            }
            public void CheckVPN()
            {
                NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface adapter in adapters)
                {
                    //crude way to check if the VPN adapter is running
                    if (adapter.Description == "VPN Adapter")
                    {
                       onVPN = true;
                    }
    
                    else
                    {
                        onVPN = false;
                    }
    
                }
            }
    

2 个答案:

答案 0 :(得分:2)

class Program
{
    public static bool onVPN;

     static void Main(string[] args)
    {
        CheckVPN();
        CheckIfInternal();
        Console.WriteLine("Press enter to close...");
        Console.ReadLine();
    }
    public static void CheckVPN()
    {
        NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface adapter in adapters)
        {
            //crude way to check if the VPN adapter is running
            if (adapter.Description == "VPN Adapter")
            {
               onVPN = true;
            }

            else
            {
                onVPN = false;
            }

        }
    }

已应用更改,static关键字添加到onVPN字段,方法CheckVPN

可在此处找到更多说明:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0120

答案 1 :(得分:0)

这里有2个选项

1.将CheckVPN()签名更改为静态,将变量onVPN更改为静态,您可以找到必须添加static here

2.创建新类并按原样放置代码,然后在主类上执行此类操作

Class1 c = new Class1();
c.CheckVPN();