C#类的应用什么时候不用new关键字?

来自故乡的风 2016-03-02 12:27:23
我的印象是,在定义类时,都要象这样:someClass user = new someClass();

然后就可以使用user 里边的属性和方法了。

但我今天看了一个三层结构,发现有时不用new也可以。见下图(为了简便,我把几个类写到一起了):



我的问题是:
(1)为什么UserInfo user不需要用new关键字来实例化呢?
(2)用new也可以:
UserInfo user = new UserInfo();
user = mgr.Login("abc", "123");
为什么?这两个有什么不同吗?

多谢帮助!
...全文
1688 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
来自故乡的风 2016-03-02
  • 打赏
  • 举报
回复
多谢各位认真回复,受益非浅!!!
我现在在路上 2016-03-02
  • 打赏
  • 举报
回复
........ 第二种,你自己new的,没点用,被Login方法返回的覆盖了
带头大哥_ 2016-03-02
  • 打赏
  • 举报
回复
1.静态类不需要new,也就是用static关键字修饰了的类;或者一个方法是静态的,也不需要new就可以直接使用那个方法 2.有的是语法允许,比如定义数组的时候,可以写int[] i=new int[3],也可以写成int[] i={1,2,3} 又或者是后面的方法已经返回了一个你需要的对象,简单点说就是 比如你需要一把刀,你自己制作(new),也可以别人给你(通过一个方法返回给你)
夏天的枫 2016-03-02
  • 打赏
  • 举报
回复
你那个方法不是New了一哈了么
绿豆丫 2016-03-02
  • 打赏
  • 举报
回复
引用 7 楼 hemowolf 的回复:
(1)为什么UserInfo user不需要用new关键字来实例化呢? mgr.Login() 方法内部作了 new 操作,然后把引用返回给调用者,再把引用赋值给 user 变量 (2)用new也可以: UserInfo user = new UserInfo(); user = mgr.Login("abc", "123"); 为什么?这两个有什么不同吗? 前一条语句创建一个对象,赋值给变量 user 后一条语句再次得到一个 UserInfo 对象,重新赋值给 user 变量 导致前一个 new 操作创建的 UserInfo 对象啥事都没干就被丢弃了,是一条废语句,并且还让系统做了一次无用的对象创建操作 假如 UserInfo 是一个孩子, UserInfo user = mgr.Login("abc", "123") 就是别人给你生个孩子,交到你手上 你的写法,是自己生了个孩子,然后把这个孩子丢弃,别人又生个孩子交给你
那不管怎样,最后卤煮还是得到个孩子。
小灰狼 2016-03-02
  • 打赏
  • 举报
回复 1
(1)为什么UserInfo user不需要用new关键字来实例化呢? mgr.Login() 方法内部作了 new 操作,然后把引用返回给调用者,再把引用赋值给 user 变量 (2)用new也可以: UserInfo user = new UserInfo(); user = mgr.Login("abc", "123"); 为什么?这两个有什么不同吗? 前一条语句创建一个对象,赋值给变量 user 后一条语句再次得到一个 UserInfo 对象,重新赋值给 user 变量 导致前一个 new 操作创建的 UserInfo 对象啥事都没干就被丢弃了,是一条废语句,并且还让系统做了一次无用的对象创建操作 假如 UserInfo 是一个孩子, UserInfo user = mgr.Login("abc", "123") 就是别人给你生个孩子,交到你手上 你的写法,是自己生了个孩子,然后把这个孩子丢弃,别人又生个孩子交给你
  • 打赏
  • 举报
回复
Logic方法里面new并返回了,如果你这都不理解,那反射哪种完全没有new的你怎么看呢
john_QQ:2335298917 2016-03-02
  • 打赏
  • 举报
回复
login方法里不是new了吗?
Poopaye 2016-03-02
  • 打赏
  • 举报
回复
你不是用了吗?
exception92 2016-03-02
  • 打赏
  • 举报
回复
Login 是一个方法而已,返回了一个UserInfo对象。这没什么好纠结的。
qbilbo 2016-03-02
  • 打赏
  • 举报
回复
在Login方法里不是有new的嘛。
szjarvis 2016-03-02
  • 打赏
  • 举报
回复
定义一个静态的类和方法就不用new而直接使用。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧