相关疑难解决方法(0)

为什么要上课?

我想知道.Net框架中大量密封类背后的动机是什么.密封课程有什么好处?我无法理解如何不允许继承有用,而且很可能不是唯一一个与这些类斗争的人.

那么,为什么框架以这种方式设计并且不会是开启一切的不间断的变化?必须有另一个原因,但只是邪恶?

.net performance

94
推荐指数
3
解决办法
3万
查看次数

为什么字符串被密封

我很好奇为什么System.String是密封的?

我知道,我可以做任何我不需要继承的事情,但仍然 - 为什么?

有很多类本质上是具有特定方法和属性的字符串.这些是标识符,电子邮件,名称等.

面向对象的设计建议将功能封装在特定的类中.在这里,我们有一种奇怪的情况,即最流行的对象框架中最可用的基本类型是不可扩展的.

谢谢.

编辑.

关于不变性的评论.很容易在私有方法中隐藏所有与状态相关的东西,并允许子类具有对类数据的只读访问权限.

// Safe inheritable immutable string (pseudocode).
class String
{
   // Private state
   private byte[] state;
   private void EditState(byte[]) {}
   // Protected read-only access to state
   protected byte getReadOnlyData() {}
   // Available to child classes overridable methods.
   protected virtual getHashCode() {}
   protected virtual xxx() {}
}
Run Code Online (Sandbox Code Playgroud)

事实上,实际应用程序中的大多数对象都是字符串.所有这些连续出版物,ASIN,IMEI等,以及名称,评论,都是其性质的字符串.我们将它们作为数据库中的字符串,或者在网页上的文本框中键入字符串,或者通过条形码扫描仪等进行封装.

拥有特定功能的字符串,而不是发明多个类,或多或少做同样的事情,这将是非常好,更安全,更优雅.

.net c#

6
推荐指数
2
解决办法
1935
查看次数

密封类和私有类有什么区别?

我知道你不能从一个类继承一次sealed被使用,但我很困惑这两者之间有什么区别:privatesealed

private如果我们不想继承它们而不是整个类,我们不能使基类成员吗?使用的意义sealed class何在?

.net c# oop class sealed

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×3

c# ×2

class ×1

oop ×1

performance ×1

sealed ×1