C#中的同一个类非静态方法为什么可以直接调用其他非静态方法而不需要new一下实例?
因为maim方法是静态的方法 , Main是程序的入口点,它在编译时必须是能够唯一确定其位置的,不能发生变化的方法,其调用不能产生任何的二意性,因此必须是静态的
静态函数不属于任何一个对象,而this是指向当前实例的,所以在静态函数里面就不能有this的,如果是非静态函数就可以 例如
public string a;
public string b
{
get
{
return a;
}
set
{
a = value;
}
}
static void Main(string[] args)
{
Program c = new Program();
c.b = "aaaa";
c.test();
Console.WriteLine(c.a);
Console.ReadKey();
}
private void test()
{
Console.WriteLine(this.b);
}
因为.net的规则就是这样。
是为是了使用方便吧。
经常的用的就弄成静态类,加载的时候就在内存中,可以快速计算操作。
不经常用的时候需要实例化,使用的时候才加载在内存中。使用完释放掉。
你觉得左手去调用右手, 需要重新创造一个人再去调用右手吗?
锐所依利: 你说的前提是调非静态方法,那这个方法必须属于一个具体的对象,假设main方法调,不论这个main方法是在同一个类里,还是另一个类里,调用前都需要new一次,第一次用对象名来调,第二次还是用对象名来调 ,不用再new.如果重复new,那是脱了裤子打屁,不是和前面的new一样吗,何必重复写一句!!如果是调静态方法,它不属于对象,又分两种情况来调用:第一种,在同一个类里直接写:方法名()就可以了,前面不用加类名或对象名;第二种,main在B类里,调用A类的方法,用类名来调啊,要写成:A类名.方法名().如果你连静态和非静态都不懂,我写这么多相当于对牛弹琴了!
东港区18335713438: C#中【静态方法】和【非静态方法】的区别?! - ?
锐所依利: 静态方法:1.可以直接用,不用new也就是实例化,通过类名加个点就可以用了2.静态方法里只可以用静态的东西3.静态方法的生命周期长,也就是说,定义一个静态变量,你往里面存东西可以一直存在4.定义的静态方法在内存中有固定的位置,所以一个程序最好不要有太多的静态方法 非静态方法:参考静态方法(取反) 不明白再留言吧#_#
东港区18335713438: C#中静态方法和非静态方法的区别 - ?
锐所依利: "C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析.C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?...
东港区18335713438: C# 静态方法和非静态方法何时使用恰当 - ?
锐所依利: 静态的方法在程序一旦启动不论是否new其所在类都会驻留内存,对系统的占用相对来说比非静态的方法占用大,但是由于其使用方便,调用快捷,还是很值得一用的,一般推荐频繁被调用的方法可以考虑使用静态的,可以提高项目性能.如果是使用很少的尽量不要静态,以免增加服务器负担,每分的题目没什么人愿意回答你的呵呵
东港区18335713438: 请问C#类的静态方法和非静态方法分别是什么?有什么区别? - ?
锐所依利: 类中方法签名有static为静态方法,没有则为非静态方法. 如 静态:public static void Get(){} 非静态:public void Get(){}区别: 1 静态方法属于类,非静态属于类的实例 如: 类.Get() new 类().Get()2 静态方法一般用于工具类,方法与类中的字段没有什么联系,依赖关系,而非静态则相反.3 加载时间也不同,具体我则不记得了
东港区18335713438: C#中类的静态方法和非静态方法分别是什么?有什么区别? - ?
锐所依利: static的方法叫静态的方法,要比非静态的运行速度快,类建立是静态方法就会建立,而非静态方法需要建立对象时才可能开始建立
东港区18335713438: c#调用Dll,非静态的类要实例化,静态的类就可以直接调用类名和方法,为什么? - ?
锐所依利: 因为.net的规则就是这样.是为是了使用方便吧.经常的用的就弄成静态类,加载的时候就在内存中,可以快速计算操作.不经常用的时候需要实例化,使用的时候才加载在内存中.使用完释放掉.
东港区18335713438: c#静态方法中为什么可以调用非静态的构造函数?比如实例化对象!! - ?
锐所依利: 为什么不可以调用?静态方法不过是一段程序而已,所有的程序的入口都必须是静态的,不然无法运行,静态的程序不能调实例化方法,那跟C还有什么区别.讲白了方法什么的其实不过就是个带this指针的函数而已
东港区18335713438: 最好能举例说明C#中类静态成员与类非静态成员存在的意义? - ?
锐所依利: 声明为static的类成员或者成员函数便在类的范围内共同享 比如你有一个cat类,需要计量一共创建了多少个cat类的实例,那么可以在cat类中声明一个静态变量catCount,然后在cat类的构造函数中加上catCount++,析构函数中加上catCount--,这样随时都可以通过cat.catCount来获取当前存在的cat类实例数量 而声明为非静态的成员是用来描述对于每个实例都不同的属性的,比如每只猫的名字都不一样,那么可以通过非静态成员的Name属性来描述猫的名字 cat catone = new cat(); catone.Name = "Yuki" 基本就是这样的
东港区18335713438: c# 静态方法是怎么用? 我这段代码为什么不能定义非静态的方法呢 - ?
锐所依利: 静态方法好像就是可以直接用,不需要前边加对象的名字.你现在用的就是aa就是个静态方法.如果要用非静态的,就把关键字去掉.然后这个aa就是program类...