Java与C#的中只读关键字区别分析:Java的Final和C#的Const,Readonly(原创)

 

Java 里面没有 readonly 关键字 , 预留了 const 的关键字 , 目前还没有实际用途 , Java , 跟这两个关键字比较接近的是 final;C# , 两者都存在并可用 . 两者修饰的全局变量或局部变量都不能被修改 . 下面是 Java final C# const 以及 readonly 之间的联系和区别
1)        C# ,const 可以修饰 全局变量和局部变量 , readonly 只能修饰 全局变量
2)        C# ,const 修饰的全局变量或局部变量必须在声明的时候初始化 , 因为是 静态 , 所以无法使用构造方法初始化 , 当需要调用 const 修饰的 全局变量 , 可以通过类直接调用 , const 修饰的 局部变量 则无法通过类调用 , 并且作用范围只能为局部 .
3)        readonly 修饰的 全局变量 可以在声明时初始化 , 也可以在 构造方法 中被初始化 , 如果 readonly 所修饰的全局变量在两个地方都初始化了 , 那么最后这个全局变量的值是在构造方法中被初始化 , readonly 可以在 全局变量和构造方法中同时初始化
4)        Java ,final 可以修饰的 全局变量 局部变量 . 其中全局变量可以选择在 声明时进行初始化 也可以使用 构造方法初始化 ( 二选一 ) , const 则因为是静态所以无法使用构造方法 , 除此之外 , final 还可以修饰方法的形式参数 , 表示这个形式参数的值在方法体内不可以被改变 , 否则会产生编译错误 . 另外 , final 还可以修饰方法 , 表示该方法不可以被子类覆盖 (override), 修饰类 , 表示该类不可以被继承 , 修饰类时 , C# sealed 关键字意思一样
 
只读关键字初始化列表:
修饰符            局部变量        全局变量        构造方法        全局变量和构造方法关系
Const            支持                支持                不支持             ————————————
Readonly       不支持             支持                支持                同一全局变量同时初始化后以构造方法为准
Final              支持                支持                支持               同一全局变量 只能在两者之间选一处进行初始化
 
C#示例:
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
       
        readonly int n=5;
        readonly int m;
        const int q = 6;
        public Program()
        {
            //n = 9; // 当readonly全局变量n被类和构造方法两处同时初始化时,将以最后初始化的构造方法为准
            m = 7;
            //q = 8; // 错误,const本身就是静态,所以无法使用构造方法
        }
        static void Main()
        {
            Program ct = new Program();
            //ct.n = 12;            // 错误, 必须声明时初始化变量,而且不能在局部变量中初始化
            const int p = 3;        // 允许在局部变量中初始化值
            //readonly int o=4;     // 错误,readonly不能在局部变量中初始化
            Console.WriteLine("n 的值为{0}" , ct.n);
            Console.ReadLine();
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值