当“虚拟”是可选的时,C#中“密封”的目的是什么?

当“虚拟”是可选的时,C#中“密封”的目的是什么?,第1张

概述如果一个类没有任何虚方法,我认为没有任何继承类的方法会影响任何未明确引用该实例作为子类实例的代码,即 Subclass obj = new Subclass() 而不是 BaseClass obj = new SubClass() 因此,为什么密封甚至存在? 如果你没有声明任何虚拟的东西(我认为在密封的类中没有任何意义),它就会阻止(例如)一个ListViewItem,它存储一些额外的信息,这些信 如果一个类没有任何虚方法,我认为没有任何继承类的方法会影响任何未明确引用该实例作为子类实例的代码,即
Subclass obj = new Subclass()

而不是

BaseClass obj = new SubClass()

因此,为什么密封甚至存在?

如果你没有声明任何虚拟的东西(我认为在密封的类中没有任何意义),它就会阻止(例如)一个ListVIEwItem,它存储一些额外的信息,这些信息代表了“知道”代码的代码.信息是存在的,与重写的方法不同,它对未使用该子类编写的代码没有影响.

解决方法 (1)密封类

我可能有一个方法接受BankAccount类型的对象.我不希望您能够创建EvilBankAccount:BankAccount并将其传递给我的方法. EvilBankAccount可能会破坏我的系统,这会对BankAccount做出假设 – 例如,它可以被序列化.也许我克隆BankAccount以防止一旦提交外部 *** 作,并且EvilBankAccount克隆就好了,但是在其构造函数中启动一个计时器,每30秒自动递增一次.

(2)密封件

您可以覆盖虚拟方法或属性,但将其密封以使其无法在继承层次结构中进一步覆盖.这里的一个用例是当您需要从构造函数访问该成员时.

总结

以上是内存溢出为你收集整理的当“虚拟”是可选的时,C#中“密封”的目的是什么?全部内容,希望文章能够帮你解决当“虚拟”是可选的时,C#中“密封”的目的是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存