
c#里为什么有的使用时函数需要new一个对象而有的不用?为什么不直接调用就好?
展开全部
类的成员函数如果不是静态的(也就是没有static修饰符)在调用的时候是要先new一个该类的对象才能调用它,而如果是静态的就不需要,直接可以用类名调用
追问
嗯。为什么不直接使用静态的呢?非要去new下才可以用?有什么好处吗?
追答
静态的成员属于该类所有对象所共有,是不会变化的,比如定义一个Person类,要输出一个人的身高和体重,这种情况就不能声明这个方法为静态的,因为人与人的身高和体重都是有差异的,再定义一个吃的方法,这时你可以定义成静态的,因为所有的人都是粮食的。
展开全部
要使用某些类的实例方法,就需要先创建类的一个对象(new),然后才能调用这个对象的方法(也就是面向过程语言中的函数)
除了实例方法外,还可以调用类的静态方法(也就是static方法),在调用静态方法时,你不需要创建一个对象,只需要用类名调用就可以了。
例如
class sample
{
static void func1()
{
}
void func2()
{
}
}
调用func1:
sample.func1();
调用func2:
sample s = new sample();
s.func2();
区别呢,在于静态方法不能访问实例方法和属性。
为什么不直接使用静态的呢?非要去new下才可以用?有什么好处吗?
没什么好处,但这就是面向对象,要调用实例方法就要先new一个实例对象。
至于为什么不直接使用静态方法……是因为有地方会需要用到“对象”
至于为什么需要用到“对象”……这就是面向对象语言出现的原因了
面向对象语言很好很强大,很方便很简单,还能封装继承多态……
总之不用纠结于概念,多用一下C#就清楚了
除了实例方法外,还可以调用类的静态方法(也就是static方法),在调用静态方法时,你不需要创建一个对象,只需要用类名调用就可以了。
例如
class sample
{
static void func1()
{
}
void func2()
{
}
}
调用func1:
sample.func1();
调用func2:
sample s = new sample();
s.func2();
区别呢,在于静态方法不能访问实例方法和属性。
为什么不直接使用静态的呢?非要去new下才可以用?有什么好处吗?
没什么好处,但这就是面向对象,要调用实例方法就要先new一个实例对象。
至于为什么不直接使用静态方法……是因为有地方会需要用到“对象”
至于为什么需要用到“对象”……这就是面向对象语言出现的原因了
面向对象语言很好很强大,很方便很简单,还能封装继承多态……
总之不用纠结于概念,多用一下C#就清楚了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-07
展开全部
new一个?什么意思?函数声明吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询