我已经统一编码了一下,但是我开始只使用C#。 但是,我注意到与统一不同,我不能放
Class Program{
public string blah = 5;
}
,然后在方法中使用它。 我为此做了一点测试:
using System;
namespace test
{
class Program
{
public string test;
public static void Main(string[] args)
{
test = "hi!!";
Console.WriteLine(test);
Main2();
Console.ReadKey(true);
}
public static void Main2(){
Console.WriteLine(test);
Console.ReadKey(true);
}
}
}
然后回来说,非静态字段需要对象引用...
我知道我只能在一个方法中创建var,但是我似乎无法从其他方法中调用它。 那么如何做到这一点,以便可以从类中的所有方法中调用变量?
感谢您的帮助!
答案 0 :(得分:0)
因为您的方法是static
。您需要使用实例方法(删除静态方法),或将包含class
属性的public
实例作为函数的参数传递。
例如:
using System;
namespace test
{
public class Program
{
public string test;
public static void Main(string[] args)
{
var program = new Program();
program.test = "hi!!";
Console.WriteLine(program.test);
Main2(program);
Console.ReadKey(true);
}
public static void Main2(Program program){
Console.WriteLine(program.test);
Console.ReadKey(true);
}
}
}
或
using System;
namespace test
{
public class Program
{
public static string test;
public static void Main(string[] args)
{
test = "hi!!";
Console.WriteLine(test);
Main2();
Console.ReadKey(true);
}
public static void Main2(){
Console.WriteLine(test);
Console.ReadKey(true);
}
}
}
答案 1 :(得分:0)
您声明的变量是一个实例字段,这意味着仅该类的实例可以设置它(每个实例可以不同)。但是您使用的方法是static
,并且它们无权访问任何实例字段(或方法)。
通常,解决此问题的方法是使变量static
在static
方法中使用:
class Program
{
public static string test;
public static void Main(string[] args)
{
test = "hi!!";
Console.WriteLine($"Inside 'Main' method, 'test' == '{test}'");
Main2();
Console.Write("\nDone! Press any key to exit...");
Console.ReadKey();
}
public static void Main2()
{
Console.WriteLine($"Inside 'Main2' method, 'test' == '{test}'");
}
}