Java与C#的中只读关键字区别分析

   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();
            }
        }
    }

 

<script type="text/javascript"><!-- google_ad_client = "pub-4504000360271476"; /* 468x60, 创建于 08-7-11 */ google_ad_slot = "6163349851"; google_ad_width = 468; google_ad_height = 60; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script> <script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script> <script>window.google_render_ad();</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值