C# 入门(3) 变量(variable)、常量(constant)、只读(readonly)变量

C#的变量和常量

参考书籍:C#图解教程
【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则

  和C/C++不同,C#不能声明全局变量或常量,也不能声明全局函数。而且所有变量和常量都必须初始化后才可以使用,同时引用类型的变量都必须先分配内存(new运算符)才可以使用。

  应该尽量使用运行时常量,而不是编译时常量。虽然编译时常量略快,但并没有运行时常量那么灵活。应仅仅在那些性能异常敏感,且常量的值在各个版本之间绝对不会变化时,再使用编译时常量。


变量

变量自动初始化

《C#图解教程》P33
自动初始化
至于初始化的值可以看上一篇点这里

嵌套本地变量

  在C/C++中可以先声明一个本地变量,然后在嵌套内声明另一个相同名称的本地变量,在内部范围覆盖外部名称。然而C#中不管嵌套级别如何,都不能在一个名称有效的范围内声明另一个同名本地变量。如下图:
  这里写图片描述

var关键字

  和C++的auto用法差不多。
1. 只能用于本地变量。
2. 只能在变量声明中包含初始化时使用。
3. 一旦编译器推断出变量类型,他就是固定且不能改变的。


编译时常量(const)

注意:

  1. 必须在声明的时候同时初始化值。在编译期决定。
  2. 只能用于数值和字符串。
  3. 没有自己的存储位置的,而是在编译时被编译器替换,类似C/C++的#define。
  4. 不能将常量声明为静态(static)。
  5. 不能是某对象的引用,因为对象的引用是在运行时决定的。

运行时常量(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;        //也可以是传进来的参数值
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值