C# 入门(3) 变量(variable)、常量(constant)、只读(readonly)变量
2017-05-02 18:04
429 查看
C#的变量和常量
参考书籍:C#图解教程【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则
和C/C++不同,C#不能声明全局变量或常量,也不能声明全局函数。而且所有变量和常量都必须初始化后才可以使用,同时引用类型的变量都必须先分配内存(new运算符)才可以使用。
应该尽量使用运行时常量,而不是编译时常量。虽然编译时常量略快,但并没有运行时常量那么灵活。应仅仅在那些性能异常敏感,且常量的值在各个版本之间绝对不会变化时,再使用编译时常量。变量
变量自动初始化
《C#图解教程》P33至于初始化的值可以看上一篇点这里
嵌套本地变量
在C/C++中可以先声明一个本地变量,然后在嵌套内声明另一个相同名称的本地变量,在内部范围覆盖外部名称。然而C#中不管嵌套级别如何,都不能在一个名称有效的范围内声明另一个同名本地变量。如下图:var关键字
和C++的auto用法差不多。1. 只能用于本地变量。
2. 只能在变量声明中包含初始化时使用。
3. 一旦编译器推断出变量类型,他就是固定且不能改变的。
编译时常量(const)
注意:
必须在声明的时候同时初始化值。在编译期决定。只能用于数值和字符串。
没有自己的存储位置的,而是在编译时被编译器替换,类似C/C++的#define。
不能将常量声明为静态(static)。
不能是某对象的引用,因为对象的引用是在运行时决定的。
运行时常量(readonly)
1. 相比const只能声明同时初始化,readonly字段还可以在构造函数初始化。
2. const是编译时决定,readonly是运行时决定。
3. 有自己的存储位置。
4. 可以用于任意类型。
class Shape { const float PI = 3.1425926; //只可以在声明同时初始化。 readonly int radius = 666; //声明同时初始化 public Shape() { radius = 0; //可以在构造函数初始化 radius = 1; //覆盖之前的值 } public Shape(int r) { radius = r; //也可以是传进来的参数值 } }
相关文章推荐
- c#如何区分静态只读变量和常量
- tensorflow中常量(constant)、变量(Variable)、占位符(placeholder)和张量类型转换reshape()
- C#入门分享(三)——C#常量与变量
- tensorflow之变量(Variable)与常量(constant)体会
- 【C#基础语言学习】:const,readonly 常量与只读的区别
- c#中密封类的学习以及常量const 只读 readonly的学习
- c#基础--常量(const),只读字段(readonly)
- C#常量和只读变量 区别
- C#中常量和只读变量的区别小结
- 教学思路C#之入门三 定义变量及常用数据类型
- 【转载】const,readonly 常量与只读
- C#基础-数据类型(常量和变量)
- C#_基础(一):常量&变量
- 全局变量的一些思考(适合刚入门C#朋友看看)
- c#入门学习(1) -- c#中的变量,运算符和程序结构
- C#常量数据与只读字段
- 比较C#的静态常量(const)和动态常量(static和readonly)
- T-SQL入门攻略之5-T-SQL的变量与常量
- Java与C#的中只读关键字区别分析:Java的Final和C#的Const,Readonly
- C#中的readonly(运行时常量)与const(编译时常量)的区别