加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用不同的构造函数实例化一个新对象

发布时间:2020-12-15 22:20:05 所属栏目:百科 来源:网络整理
导读:参见英文答案 Why we do create object instance from Interface instead of Class?????????????????????????????????????4个 编辑:对不起,如果这看起来有点明显/简单,我试着找到答案,但我不知道如何正确地说出来 我一直在研究一点C#,我在实例化新对象时遇
参见英文答案 > Why we do create object instance from Interface instead of Class?????????????????????????????????????4个
编辑:对不起,如果这看起来有点明显/简单,我试着找到答案,但我不知道如何正确地说出来

我一直在研究一点C#,我在实例化新对象时遇到了一些麻烦,其中构造函数和类类型不同.因此,常规对象将通过以下方式实例化:

Object obj = new Object();

这很明显,但是因为我一直在研究接口,所以我遇到了一些语法如下:

interface ISaveable {
    string Save();
}

public class Catalog : ISaveable {
    string Save() {
        return "Catalog Save";
    }

    string ISaveable.Save(){
        return "ISaveable Save";
    }
}

然后教程继续做了一些事情:

Catalog c1 = new Catalog();

所以我知道这里正在实例化一个新的目录类实例,但是我不能为我的生活找到下一行:

ISaveable c2 = new Catalog();

现在实际的代码本身没有问题(我理解接口的显式和隐式实现等),但它只是关于上述对象c2的实际实例化的部分.为什么类类型(ISaveable)与构造函数(new Catalog())不同?

任何解释都将非常感谢!

解决方法

据我所知,创建的对象的实际类型

Catalog c1 = new Catalog();

ISaveable c2 = new Catalog();

是相同的,即Catalog(调用相同的构造函数),但引用的类型是不同的;在c1和c2上调用Save将调用不同的实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读