创建了两个类Demo1和Demo2
Demo1里有一个字段sentence:
public class Demo1
{
public string sentence="OK";
}
Demo2的构造函数需要一个Demo1类型的对象作参数:
public class Demo2
{
string words;
//构造函数
public Demo2(Demo1 D)
{
words = D.sentence;
}
public void write()
{
Console.WriteLine(words);
}
}
在方法体外部实例化Demo2:
class Program
{
Demo1 D = new Demo1();
Demo2 D2 = new Demo2(D);
static void Main(string[] args)
{
D2.write();
Console.ReadKey();
}
}
会报错:
字段初始值设定项无法引用非静态字段、方法或属性
求大神们帮忙解惑,谢谢
main方法是静态的,,需要给上面两个变量加上静态修饰符,,如下:
static Demo1 D = new Demo1();
static Demo2 D2 = new Demo2(D);
static void Main(string[] args)
{
D2.write();
Console.ReadKey();
}
你再试试。
C#静态方法是一种特殊的成员方法 它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!
static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!
2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
4.C#中的方法有两种:实例方法,静态方法.
你的问题在第2条
说错了 是这句 static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!