![]() |
1
10
实际上,选项1和2是等效的。 在我看来,实际上有三种不同的情况:
|
![]() |
2
5
考虑
原因:当你暴露(然后在别处消费)时
一
|
![]() |
3
2
正确的选择是4:
使用只读字段而不是公共常量很重要。常量的文本值被编译到IL中。如果更改const值并重新编译使用它的一个程序集,那么现在您将与使用const的其他程序集不匹配。其他程序集仍将使用旧的常量值运行。 非常 很难诊断。 只读字段不能出现这种情况,其他程序集将始终读取更新的值。如果你使用const,一定要保证它们是私有的。 |
![]() |
4
2
|
![]() |
5
1
如果我能投赞成票——我会投赞成票。此外,您的1和2与IL中所示完全相同:
选项2:
现在看看选项3。数字3与1和2非常不同。如前所述,3是静态的,因为const是静态的。现在真正的问题是将苹果与苹果进行比较,如果1和2在哪里使用静态访问器呢?然后,它们将比3更具可比性。目前,您必须为选项1和2初始化一个类,但不能为3初始化。因此,在这种情况下,对象的初始化是不必要的,您总是希望尽可能使用static,因为这样可以避免这样做。 现在让我们看一下IL中的数字3:
因此,为了提高效率,我会使用3。这也是多年来许多有才华的同龄人教我的。 现在,向房间里的白象讲话。readonly和const的区别在于cont发生在编译时,readonly发生在运行时。静态只读初始化一次,而非静态只读为每个实例初始化一次。例如,如果您要求您的问题执行一些操作,例如为永远不会更改的错误消息创建一个常量字符串类,则使用选项3,而不是只读静态或其他。考虑到在运行时尝试初始化数百条错误消息,而不是在编译时,您将看到明显的性能差异。此外,由于您清楚地声明它是一个“永远不会更改的字符串”,因此在这种情况下甚至不应考虑只读,因为“…它永远不会更改”。const和readonly有它们的位置,但readonly不适用于永远不会更改并且在编译时已知的项。 |
![]() |
6
1
物业似乎是更好的选择,因为
|
![]() |
Codename K · VB6-如何使窗体排在第二位? 7 年前 |
![]() |
spice · 条件语句PHP 5.4出现意外“)”错误[重复] 7 年前 |
![]() |
snuff · c语法的问题-const*const*定义 7 年前 |
![]() |
DCR · 为什么要触发onclick事件 7 年前 |
![]() |
ClementNerma · 如何在C中生成“实”常量?[副本] 7 年前 |