C#类变量初始化

时间:2015-02-21 05:58:52

标签: c# private declaration public

我想声明并初始化一个类本地的字符串变量,但是可以被该类的所有函数访问。 Fyi,这是一个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;
    }
}

4 个答案:

答案 0 :(得分:2)

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

private static string DirectoryPath;

答案 1 :(得分:1)

所以你现在正走在正确的轨道上。在C#中,我们称之为Fields

  

字段通常存储必须可访问的数据   一个类方法,必须存储超过生命周期   任何一种方法

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

同样如上所述,您将所有方法都设为static,因此您还需要使用字段变量static来访问它

private static string DirectoryPath;
  

可以选择将字段声明为静态。这使得该领域   即使没有该类的实例,也可以随时向呼叫者提供   存在。

答案 2 :(得分:1)

如您的示例中所示,您已根据所需功能正确完成了该操作。但您可能需要了解有关在C#中使用static个关键字的更多信息。您可以在MSDN

了解有关它的更多信息

这是对您的代码的拦截,可能会清除您的概念 由于DirectoryPath由您的progream中的静态方法使用,您必须将此变量声明为static,因为,setPaths方法用于静态Main,Main是最顶层的不需要为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;
    }
}

答案 3 :(得分:0)

在字符串前添加静态。

 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);
    }


}
相关问题