微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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将调用不同的实现.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐