zoukankan      html  css  js  c++  java
  • static vs const in c#

    All constants declarations are implicitly static, and the C# specification states that the (redundant) inclusion of the static modifier is prohibited. I believe this is to avoid the confusion which could occur if a reader were to see two constants, one declared static and one not - they could easily assume that the difference in specification implied a difference in semantics. Having said that, there is no prohibition on redundantly specifying an access modifier which is also the default one, where there is a choice. For instance, a (concrete) method can be explicitly marked as private despite that being the default. The rule appears to be that where there is no choice (e.g. a method declaration in an interface) the redundant modifier is prohibited. Where there is a choice, it's allowed.

     

    I think "const" and "static readonly" are not the same. The "const" must be known at compile time. However "static readonly" is initialized at runtime, but its the value cannot be changed (because it's readonly) after initialization.

    In practice, have a look at this example:

    // Trying to assign an instance of a class StorageFolder (which can't be known at compile time) to FOO

    // this will compile

    private static readonly StorageFolder   FOO = KnownFolders.DocumentsLibrary;

    // this won't compile

    private const  StorageFolder            FOO = KnownFolders.DocumentsLibrary;

  • 相关阅读:
    人与人之间的本质
    如何让百度搜索不到
    js.prototype最深刻的理解
    调用函数不能用&
    浏览器的缓存就是关闭了浏览器任然存在
    Spring switch的使用
    thymeleaf如何遍历数据 each循环的使用
    spring 机制 扫描包
    Spring分层次建包
    如何使用thymeleaf显示控制传递过来的数据
  • 原文地址:https://www.cnblogs.com/jjj250/p/2848819.html
Copyright © 2011-2022 走看看