Java5.0与C#2.0的区别之二:Final,Const和Readonly

 
Java里面没有readonly关键字,预留了const的关键字,目前还没有实际用途,在Java中,跟这两个关键字比较接近的是final;C#中,两者都存在并可用. 两者修饰的field或local variable都不能被修改.下面是Java中final与C#中const以及readonly之间的联系和区别
1. C#中,const可以修饰field和local variable,但readonly只能修饰field
2. C#中,const修饰的field或local variable必须在声明的时候初始化,readonly修饰的field可以在声明时初始化,也可以在构造函数中被初始化,如果readonly所修饰的field在两个地方都初始化了, 那么最后这个field的值是在构造函数中被设定的值,如下面程序示例中的n
3. 在Java中, 跟const非常接近的是final关键字, final所修饰的field和local variable也是只能在声明的同时进行初始化, 除此之外, final还可以修饰方法的形式参数, 表示这个形式参数的值在方法体内不可以被改变,否则会产生编译错误. 另外, final还可以修饰方法,表示该方法不可以被子类覆盖(override), 修饰类,表示该类不可以被继承,修饰类时,跟C#的sealed关键字意思一样
 
下面是一个C#的例子 
 
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp
{
    class ConstantTest
    {
        readonly int n = 5;
        readonly int m;
        const int q = 6;
        public ConstantTest()
        {
            n = 9;//reassign n to override 5 above
            m = 7;
            //q = 8; //error, can't modify const member wherever except on declaration
        }
        static void Main()
        {
            ConstantTest ct = new ConstantTest();
            //ct.n = 12;//error, can't modify readonly member here
            const int p = 3;//const can modify decorate local variables
            //readonly int o=4; //error, readonly can't decorate local variables
            Console.WriteLine("Value of n is {0}", ct.n);
        }
    }
}
 
运行这个程序的结果如下:
Value of n is 9;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值