【问题标题】:C# class variable initializationC# 类变量初始化
【发布时间】:2015-04-22 22:34:21
【问题描述】:

我想声明和初始化一个字符串变量,它是一个类的本地变量,但可以被该类的所有函数访问。仅供参考,这是一个用于 gui 的应用程序,它将使用文件夹中的多个文本文件。我正在尝试设置一个包含项目目录路径的字符串变量,以便此类中的所有函数都可以访问它。

我提供了一部分代码,包括设置路径的函数以及设置时使用字符串变量的函数。

public class Program
{   
    private string DirectoryPath;

    public static void Main()
    {
        setPaths();
        SetGroundTempArray();
    }

    public static void setPaths()
    {
        DirectoryPath = Directory.GetCurrentDirectory();
    }

    public static void SetGroundTempArray()
    {
        string groundtempfile = "\\groundtemp.txt";
        string groundtempdir = "\\Text Files";
        string groundtempFP = DirectoryPath + groundtempdir + groundtempfile;
    }
}

【问题讨论】:

  • 你有什么问题?

标签: c# private declaration public


【解决方案1】:

正如您的示例中所给出的,您已经按照您想要的功能正确地完成了它。但是您可能需要了解更多关于 C# 中 static 关键字的用法。您可以通过MSDN了解更多信息

这里截取你的代码,可能会澄清你的概念。
由于DirectoryPath 被您的程序中的静态方法使用,因此您必须将此变量声明为static 也是因为,setPaths 方法用于静态 Main,而 Main 是最顶层的静态类。 t 要求创建Program 类的实例。这就是为什么Main 方法会要求方法内使用的所有方法或变量或字段必须声明为静态。

public class Program
{   
    private static string DirectoryPath;

    public static void Main()
    {
        setPaths();
        SetGroundTempArray();
    }

    public static void setPaths()
    {
        DirectoryPath = Directory.GetCurrentDirectory();
    }

    public static void SetGroundTempArray()
    {
        string groundtempfile = "\\groundtemp.txt";
        string groundtempdir = "\\Text Files";
        string groundtempFP = DirectoryPath + groundtempdir + groundtempfile;
    }
}

【讨论】:

    【解决方案2】:

    在字符串前面添加静态。

     class Program
    {
        //add static in front of string
        static String a = "Hello";
    
    
        static void Main(string[] args)
        {
            h();
            Console.ReadKey();
        }
    
        public static void h()
        {
            Console.WriteLine(a);
        }
    
    
    }
    

    【讨论】:

      【解决方案3】:

      所以你目前在正确的轨道上。在 C# 中,我们称它们为 Fields

      字段通常存储必须可供超过 一个类方法,并且必须存储的时间长于 任何一种方法

      在您的情况下,private string DirectoryPath; 是一个字段。而且您正在遵循制作它的良好做法private

      如上所述,您将所有方法都设置为static,因此您还需要将字段变量设置为static 才能访问它

      private static string DirectoryPath;
      

      可以选择将字段声明为静态的。这使得场 随时可供调用者使用,即使没有该类的实例 存在。

      【讨论】:

        【解决方案4】:

        您的代码无法编译。
        您应该将DirectoryPath 类字段声明为静态:

        private static string DirectoryPath;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-03
          • 1970-01-01
          • 1970-01-01
          • 2016-03-11
          • 2012-01-20
          • 1970-01-01
          • 2011-06-28
          • 1970-01-01
          相关资源
          最近更新 更多