1:调用静态成员,可以直接用“类名.成员名”;调用非静态成员,必须先new一个对象,然后用“对象名.成员名”。
2:上面那句话,到底考没考虑主调者是啥形态啊,因为:
3:非静态方法可以直接调用静态和非静态成员(这句话是正确的)。
4:如果上面第3点是正确的,那么,下面代码
class Student
{
string name2 = "汤姆";
public void ain()
{
Console.WriteLine(name2);
Console.ReadKey();
}
}
class A
{
public void sex()
{
Student.ain(); //非静态方法调用非静态成员ain。为什么又是错的呢,上面不是说了是正确的吗?
}
}
class program
{
static void Main()
{
A a = new A();
a.sex();
}
}
为什么又出错呢?
给位老师,请帮我总结一下这静态与非静态,其他理论,诸如分配内存啊之类的就不必说了,就给我总结就行了!!
2:上面那句话,到底考没考虑主调者是啥形态啊,因为:
3:非静态方法可以直接调用静态和非静态成员(这句话是正确的)。
4:如果上面第3点是正确的,那么,下面代码
class Student
{
string name2 = "汤姆";
public void ain()
{
Console.WriteLine(name2);
Console.ReadKey();
}
}
class A
{
public void sex()
{
Student.ain(); //非静态方法调用非静态成员ain。为什么又是错的呢,上面不是说了是正确的吗?
}
}
class program
{
static void Main()
{
A a = new A();
a.sex();
}
}
为什么又出错呢?
给位老师,请帮我总结一下这静态与非静态,其他理论,诸如分配内存啊之类的就不必说了,就给我总结就行了!!
{
Console.WriteLine(name2);
Console.ReadKey();
}
你的ain是非静态的,没问题,但是怎么能用Student.ain()来调用的呢?你这样调用根本就违背了你的原则1:“1:调用静态成员,可以直接用“类名.成员名”;调用非静态成员,必须先new一个对象,然后用“对象名.成员名”。”
你的第二个错误:静态方法里面只能用静态的内容,你在里面new东西就是不行。这样说够直白不?
3,非静态方法可以直接调用本类和其它类的静态方法,只能调用本类的非静态成员,要调用其它类的非静态方法,要先New一下那个类
静态成员当第一次调用时自动调用静态构造函数实例化,以后是一直存在的,直到程序结束
非静态成员要必须New以后才存在(手动调用构造函数),其生命周期要看作用域,并非与程序同寿
在定义一个类的时候,非静态方法访问本类的非静态成员,是假设此类已经实例化了,所有成员前面都有个this代表此类的当前对象,只不过在写代码的时候,this往往省略了
{
static string name2 = "汤姆";
public static void ain()
{
Console.WriteLine(name2);
Console.ReadKey();
}
}
class A
{
public void sex()
{
Student.ain();
}
} class program
{
static void Main()
{
A a = new A();
a.sex();
}
}
汤姆
在静态方法中是不能直接访问非静态方法的。
静态方法只能调用静态变量,静态方法,静态..等
{
public static string i = "我爱";
public string g = "苍井空";
static void Main()
{
a b = new a(); //我在静态方法里,new了一个,正确了
Console.WriteLine("{0}{1}",i,b.g);
Console.ReadKey();
}
}