求教大家关于C++和C#中的静态方法的问题
前几天在看C#高级编程的时候看到关于静态方法的问题静态方法在使用的时候不必实例化就能直接使用,如果实例化会出现怎么样的错误?自己可不可以去定义一个静态方法,具体该如何去定...
前几天在看C#高级编程的时候看到关于静态方法的问题
静态方法在使用的时候不必实例化就能直接使用,如果实例化会出现怎么样的错误?自己可不可以去定义一个静态方法,具体该如何去定义,可不可以说得具体点,还有静态方法有什么特别的用途没?
谢谢大家了^-^ 展开
静态方法在使用的时候不必实例化就能直接使用,如果实例化会出现怎么样的错误?自己可不可以去定义一个静态方法,具体该如何去定义,可不可以说得具体点,还有静态方法有什么特别的用途没?
谢谢大家了^-^ 展开
2个回答
展开全部
实例方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所从属的已被实例化的对象。这一区别的外在表现为实例方法内可使用this关键字代表所从属的实例对象,而静态方法不可使用this因为静态方法不针对任何实例对象。实例对象调用静态方法会因参数中多出一个指向自己的指针(this)而发生错误。
定义静态方法只需加注static关键字即可。静态方法独立于对象实例之外,与对象是否已被实例化无关,调用静态方法要用类定义的名称而不能用实例名称如:
class a
{
...
public static void b(){}//静态方法
public void d(){}//实例方法
}
a c = new a();
a.b();//正确的调用方式,与对象实例无关。
a.d();//错误的调用方式。
c.b();//错误的调用方式。
c.d();//正确的调用方式,隐含this指针,不需要也不允许显式传入对象指针。
定义静态方法只需加注static关键字即可。静态方法独立于对象实例之外,与对象是否已被实例化无关,调用静态方法要用类定义的名称而不能用实例名称如:
class a
{
...
public static void b(){}//静态方法
public void d(){}//实例方法
}
a c = new a();
a.b();//正确的调用方式,与对象实例无关。
a.d();//错误的调用方式。
c.b();//错误的调用方式。
c.d();//正确的调用方式,隐含this指针,不需要也不允许显式传入对象指针。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询