![]() |
1
8
|
![]() |
2
3
在.net中,结构实例方法在语义上等价于带有额外
在语义上是等价的,除了一个区别:只有在
这就给.net语言的设计者带来了一个问题:不允许在只读结构上使用任何成员函数会很烦人,但他们不想允许成员函数写入只读变量。他们决定“punt”,这样在只读结构上调用一个实例方法将生成该结构的一个副本,调用该结构上的函数,然后丢弃它。这样做的效果是减慢对不编写底层结构的实例方法的调用,并使之成为这样,以便尝试使用在只读结构上更新底层结构的方法将产生错误 不同的破碎语义 如果直接将其传递给struct,将实现什么。请注意,在没有副本就不正确的情况下,副本占用的额外时间几乎永远不会产生正确的语义。
我在.net中的一个主要问题是(至少在4.0版,可能在4.5版)仍然没有一个属性,结构成员函数可以通过它来指示是否修改
|
![]() |
Rajesh Samui · 如何使select2只读? 7 年前 |
![]() |
EDJ · 复选框(ControlsFX)设置为只读[JavaFX] 7 年前 |
![]() |
tgr · 我可以阻止对Oracle数据库进行更新或删除吗? 7 年前 |
![]() |
Edi G. · 插入后的SQL列只读,不带触发器 10 年前 |
![]() |
user938363 · 简单表单上的只读复选框仍然可以更新 11 年前 |
![]() |
Spook · 初始值设定项列表中只读属性的赋值 12 年前 |