为什么会这样

weikeli19 2015-12-15 06:28:01
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 要删除的
{
public class A
{
public A Clone()
{
return (A)this.MemberwiseClone();
}
}
class Program
{

static void Main(string[] args)
{
A x = new A();
A x_clone = x.Clone();
}
}
}

请问这里为什么要显示的 我知道去掉(A)将无法隐式转换 我个人认为返回this.MemberwiseClone()已经是个对象了 无需再用(A)了 请高手指教 谢谢啦
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2015-12-15
  • 打赏
  • 举报
回复
我说的是语言层面,编译器没法通过推断知道MemberwiseClone会返回一个A的对象,因为MemberwiseClone方法定义的返回值是object,这里只能你自己去进行转换,自己对自己负责。
cheng2005 2015-12-15
  • 打赏
  • 举报
回复
C#是强类型语言,MemberwiseClone返回的是object对象,谁知道是不是A?谁给你承诺了一定是A?

110,538

社区成员

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

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

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