c#里为啥有的使用时函数需要new一个对象而有的不用?为啥不直接调用就好?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#里为啥有的使用时函数需要new一个对象而有的不用?为啥不直接调用就好?相关的知识,希望对你有一定的参考价值。
类的成员函数如果不是静态的(也就是没有static修饰符)在调用的时候是要先new一个该类的对象才能调用它,而如果是静态的就不需要,直接可以用类名调用追问嗯。为什么不直接使用静态的呢?非要去new下才可以用?有什么好处吗?
追答静态的成员属于该类所有对象所共有,是不会变化的,比如定义一个Person类,要输出一个人的身高和体重,这种情况就不能声明这个方法为静态的,因为人与人的身高和体重都是有差异的,再定义一个吃的方法,这时你可以定义成静态的,因为所有的人都是粮食的。
参考技术A 要使用某些类的实例方法,就需要先创建类的一个对象(new),然后才能调用这个对象的方法(也就是面向过程语言中的函数)除了实例方法外,还可以调用类的静态方法(也就是static方法),在调用静态方法时,你不需要创建一个对象,只需要用类名调用就可以了。
例如
class sample
static void func1()
void func2()
调用func1:
sample.func1();
调用func2:
sample s = new sample();
s.func2();
区别呢,在于静态方法不能访问实例方法和属性。
为什么不直接使用静态的呢?非要去new下才可以用?有什么好处吗?
没什么好处,但这就是面向对象,要调用实例方法就要先new一个实例对象。
至于为什么不直接使用静态方法……是因为有地方会需要用到“对象”
至于为什么需要用到“对象”……这就是面向对象语言出现的原因了
面向对象语言很好很强大,很方便很简单,还能封装继承多态……
总之不用纠结于概念,多用一下C#就清楚了 参考技术B new一个?什么意思?函数声明吗?
C# new 后 得到的却是一个空的对象
是的 new只是一个新对象 如果你给了有参构造函数并且在函数里赋值了 那样它才不是空的对象总而言之 无论如何 new出来就是空的 不管你以什么方式 都必须去赋值 参考技术A 这个主要是要看这个类的构造函数是什么样子了,new其实就是执行构造函数的过程,如果构造函数里给某些属性赋值了,那么这些对象就会有默认值,如果没有 那么这些对象会是各自对应的数据类型的默认值,如int类型,如果构造函数里面,没有赋值,他的默认值是0,string类型就是"" 参考技术B 是滴,得到的当然是空对象。需要你赋值追问
ManagerPlay aa = new ManagerPlay();
// aa.name;
Debug.Log(aa);
这个有问题么? 却是null需要Manager类么?
需要啊
class Manager
String name;
public String getName()
return name;
public void setName(String name)
name = "快乐的JB毛 ";
this.name = name;
以上是关于c#里为啥有的使用时函数需要new一个对象而有的不用?为啥不直接调用就好?的主要内容,如果未能解决你的问题,请参考以下文章