首页 > 其他分享 >const readonly 区别

const readonly 区别

时间:2023-08-13 12:23:00浏览次数:34  
标签:roi const 区别 int worker readonly public

readonly与const的区别,要使用const的理由是效率高。
(1)、const是编译常量,readonly是运行常量
(2)、const是修饰基础类型,readonly没有限制

public const int Cvalue = 100;
public const static int Cvalue = 100;  // 编译异常


readonly是运行是常量,第一次复制后不可改变。
"不可改变"分两层含义。
(1)、值类型变量,值本身是不可能改变的(readonly,只读)
(2)、引用类型变量,引用类型本身不可改变,字段

 public class ReadOnlyInstance
    {
        public ReadOnlyInstance(int id ) {
            this.ID = id;
            worker = new Worker();
        }
        public readonly int ID;
        public readonly Worker worker;
    }

    public class Worker
    {
        public string Name { get; set; } = "nickname";
        public int Age { get; set; } = 30;
        public override string ToString()
        {
            return "Name:" + Name + "age:" + Age;
        }
    }

测试:

 ReadOnlyInstance roi = new ReadOnlyInstance(13);
            // roi.worker = new Worker(); 异常
            Console.WriteLine("默认值");
            Console.WriteLine(roi.worker.ToString());

            roi.worker.Age = 20;

            // 修改值
            Console.WriteLine("修改值");
            Console.WriteLine(roi.worker.ToString());

结果:

 

标签:roi,const,区别,int,worker,readonly,public
From: https://www.cnblogs.com/panpeng666/p/17626387.html

相关文章

  • 数据库设计中的数据字典和平时开发中用到的字典表,有什么区别
    数据字典(DataDictionary):数据字典是数据库设计的一部分,它是一份关于数据库中各种数据元素的信息文档,包括表、列、数据类型、索引、约束、视图等等。数据字典记录了数据库结构的元数据,描述了数据的定义、用途、关系以及数据的业务含义。数据字典通常由数据库管理员(DBA)或设计者创......
  • 【逗号你真的懂吗?】C++与JAVA中逗号的区别
    参考文章:这里一、先上结论C++中的逗号几乎可以说是随便使用,但是JAVA中的逗号就要注意了:JAVA中使用逗号(,)来分隔多条赋值语句时,只能在分隔方法的参数、定义变量时或用于for循环的表达式时使用,别的地方一律不能,只能将每条语句用分号(;)隔开。二、C++中的逗号逗号运算符和逗号表达式......
  • 链表和数组的区别
    链表和数组的区别链表逻辑上相邻的元素在物理位置上不一定相邻。优点:插入、删除效率高,不需要一个连续的很大的内存缺点:查找某一个位置的元素效率低。数组优点:存取速度快缺点:1.整块连续空间,占很大内存。2.插入或删除数据效率低、不方便链表数组逻辑上相......
  • DDD与我们的传统开发又有什么区别和优势?
    DDD与传统开发相比具有以下区别和优势:领域驱动设计:DDD强调通过领域模型来描述业务领域,将业务逻辑与技术实现分离,使系统更贴近实际业务需求。传统开发往往基于数据库或技术架构进行设计,容易导致业务逻辑分散和混乱。共享知识:DDD鼓励开发团队与领域专家进行密切合作,共同建立领域模型......
  • 文件映射缺页中断和匿名页面缺页中断的区别
    文件映射缺页中断和匿名页面缺页中断主要区别在于缺页时的处理方式和触发原因。对于文件映射缺页中断,当程序需要访问文件映射的某个页面但该页面尚未调入内存时,就会触发文件映射缺页中断。这时,操作系统会根据文件映射的约定从磁盘加载相应的文件内容到内存中,然后更新页表,使得程序......
  • cookie和session的区别及原理
    Cookie概念在浏览某些网站时,这些网站会把一些数据存在客户端,用于使用网站等跟踪用户,实现用户自定义功能.是否设置过期时间:如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器,cookie就消失了.这个生命期为浏览会话期的cookie,就是会话C......
  • 不能从const char *转换为LPCWSTR
    在字符串的前面添加一个大写L。这样可以实现将字符串转换为宽字符集。参考:https://jingyan.baidu.com/article/fec7a1e5f935211190b4e7e8.html......
  • cookie和session的区别及原理
    Cookie概念在浏览某些网站时,这些网站会把一些数据存在客户端,用于使用网站等跟踪用户,实现用户自定义功能.是否设置过期时间:如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器,cookie就消失了.这个生命期为浏览会话期的cookie,就是......
  • .h和.c文件的区别到底是什么(精确讲解)
    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:    1.预处理阶段2.词法与语法分析阶段 3.编译阶段,首先 编译成纯汇编语句,再将之 汇编成跟CPU相关的二进制码,生成各个目标文件(.obj文件) 4.......
  • 有关成员函数const修饰,对传入的成员属性影响以及返回指针引用的bug问题
    boolcontains(_T&data,bn_ptrt)const 此时传入的成员参数是带有const属性的,但是data是不带const的,通过影响成员参数访问权限,而达到不能修改的目的;BinarySearchTree<_T>&BinarySearchTree<_T>::operator=(constbst_refbst){ if(this!=&bst) { makeEmpty(); ......