Reputation: 1
I want to declare and initialize a string variable that is local to a class but can be accessed by all functions of the class. Fyi, this is an app for a gui which will be making use of several text files in folders. I am trying to set a string variable containing the project directory path so it can be accessed by all the functions within this class.
I have provided an portion of my code including the function that sets the path along with a function that uses the string variable when set.
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;
}
}
Upvotes: 0
Views: 211
Reputation: 1973
As given in your example, you have done it right as the functionality you want. But you may need to learn more about the usage of static
keywords in C#. You can learn more about it at MSDN
Here's a intercept about your code, that might clear your concept.
As DirectoryPath
is used by a static method in your progream, you must need to declare this variable as static
also because of, setPaths
method is used in static Main, and Main is the topmost level static class that don't requires the instance to be created of the Program
Class. and that is why, Main
method would require all the methods or variable or fields is being used inside the method must be declared as static.
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;
}
}
Upvotes: 1
Reputation: 1670
Add static in front of string.
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);
}
}
Upvotes: 0
Reputation: 13059
So you are currently on the right track. In C# we call them Fields
Fields typically store the data that must be accessible to more than one class method and must be stored for longer than the lifetime of any single method
In your case private string DirectoryPath;
is a field. And you are following the good practice of making it private
.
Also as noted you have all methods as static
so you need to make the Field variable static
as well to access it
private static string DirectoryPath;
A field can optionally be declared static. This makes the field available to callers at any time, even if no instance of the class exists.
Upvotes: 1
Reputation: 14059
Your code won't compile.
You should declare the DirectoryPath
class field as static:
private static string DirectoryPath;
Upvotes: 2