CS0133 “The expression being assigned to 'identifier' must be constant” - what's the reason behind that?

前端 未结 4 1247
感情败类
感情败类 2020-12-03 16:47

With a lot of C++ background I\'ve got used to writing the following:

const int count = ...; //some non-trivial stuff here
for( int i = 0; i < count; i++          


        
4条回答
  •  一向
    一向 (楼主)
    2020-12-03 17:29

    Because const in C# is a lot more const than const in C++. ;)

    In C#, const is used to denote a compile-time constant expression. It'd be similar to this C++ code:

    enum {
      count = buffer.Length;
    }
    

    Because buffer.Length is evaluated at runtime, it is not a constant expression, and so this would produce a compile error.

    C# has a readonly keyword which is a bit more similar to C++'s const. (It's still much more limited though, and there is no such thing as const-correctness in C#)

提交回复
热议问题