常量和字段

  常量是一个特殊的符号,它有一个从不变化的值。定义常量符号时,它的值必须能在编译时确定。确定之后,编译器将常量的值保存到程序集的元数据中。这意味着只能为编译器认定的基元类型定义常量。在C#中一下类型都是基元类型,可用于定义常量:boolean,char,byte,sbyte,int16,int32,int64,Uint16,Uint32,Uint64,single,double,decimal和string。然后C#也允许定义一个非基元类型的常量变量,前提是把它的值设为null。

  定义常量将导致创建元数据。代码引用一个常量符号时,编译器会在定义常量的程序集的元数据中查找改符号,提取常量的值,并将值嵌入生成的IL代码中。由于常量的值直接嵌入代码中,因此运行时不需要分配内存。除此之外,不能获取变量的地址,也不能以传入引用的方式传递常量。基于这样一个特性,会有以下的状况,A程序集中定义了常量,B引用A中的常量,一旦A中的常量变化,B程序集除非引用新的A程序集并重新生成,否则B中的常量值不会变。所以,除非字段永远不会变化,否则不应该将一个字段定义为常量。

  字段是一种数据成员,其中容纳一个值类型的实例或者一个引用类型的引用,字段修饰符可以是:

  1. static 表示字段是类型状态的一部分,而不是对象状态的一部分
  2. (默认) 表示字段与类型的一个实例关联,而不是与类型本身关联
  3. readonly 表示只能由一个构造器中的代码写入
  4. volatile 表示Clr不会执行一些“线程不安全”的优化措施

  前面的例子,如果将字段声明为readonly,那么A中改变后,B程序集不需要重新生成,而是在运行是从分配给A程序集的动态内存中提取readonly字段的值。实际上,类中的字段总是在类实例化的时候进行初始化的。还有一点值得注意的是,readonly作用于引用类型字段时,不可改变的是引用,而非字段引用的对象。

    public sealed class Atype{public static readonly char[] SChars = new char[] {'a','b','c'};}class Program{static void Main(){//可以修改成功Atype.SChars[0] = 'x';Atype.SChars[1] = 'y';Atype.SChars[2] = 'z';//无法编译通过Atype.SChars = new char[] { 'x', 'y', 'z' };}}            

 

转载于:https://www.cnblogs.com/xienb/p/3281238.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单实用的二级树形菜单hovertree

原创 hovertree是一个仿京东的树形菜单jquery插件,暂时有银色和绿色两种。官方网址:http://keleyi.com/jq/hovertree/欢迎下载使用查看绿色效果:http://keleyi.com/jq/hovertree/hovertreegreen.htm可以设置菜单宽度(width),还可以…

分析根文件系统中的目录结构

以下内容源于网络资源的整理,如有侵权请告知删除。 我们利用Busybox制作根文件系统,就是为了创建下面的这些目录和各文件。其中有些目录和文件不是构建最小根文件系统所必需的,有些却是必需的。 1、/linuxrc文件 这是最重要的文件&#xff0c…

xp系统一直跳出宽带连接服务器,XP系统网络问题解决方案

XP系统网络问题解决方案随着国内 Internet 的普及和信息产业的深化,近几年宽带网络的发展尤为迅速。下面是小编整理的一些生活上Windows XP网络故障的解决方案,希望对你有帮助!故障1:本地连接受限制或无连接很多用户发现,当每次进…

装逼的翻译,害死多少人,你同意吗?到底什么是非终止状态,终止状态

http://msdn.microsoft.com/zh-cn/library/system.threading.autoresetevent.aspx http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx 很久以前对这段翻译就很不爽了,为啥一直都要把non-signaled的翻译成“非终止状态”,为…

SQL Server 错误18456

第一步、 错误发生的场景 第二步、 找到引起错误的原因 第1步、 查看windows日志文件。 运行中输入 eventvwr (event viewer)打开日志文件查看器, 第三步、 解决方案,由第二步我们可以看出是SQL Server的认证模式引起了问题,所以只要把它改一下就可以…

数组面试

1.数组求和 如果只是普通求和会简单&#xff0c;但是只能使用一行代码该怎么办呢&#xff1f; int sum(int *a,int n) {return n 0 ? 0 : sum(a,n-1) a[n-1]; }2.寻找发帖水王 int Find(int *a,int n) {int times 0;int value;for (int i 0;i < n;i){if (times 0){val…

分析根文件系统中的etc/init.d/rcS文件

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、文件简介 &#xff08;1&#xff09;由博文分析根文件系统中的/etc/inittab文件可知&#xff0c;etc/inittab文件的第一行配置项一般是“::sysinit:/etc/init.d/rcS”&#xff0c;这说明控制台…

拼多多显示内部服务器错误是怎么回事,拼多多提现出现错误怎么办?拼多多提现常见问题...

拼多多提现是每个店家都会去操作的&#xff0c;不过提现时总会遇到很多问题&#xff0c;例如手机号码换了收不到验证码、提现资金到账时间、提现出现错误等等&#xff0c;当然还有很多。当这些问题出现时我们应该如何去解决呢?1、如果出现银行提现手机号非现使用手机号&#x…

分析根文件系统中的用户登录(主要涉及/etc/profile、/etc/intttab、/etc/passwd和/etc/shadow等文件)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、简单分析/etc/profile文件 1、何时被调用 这个文件直接或者间接地被/linuxrc文件调用。 2、文件简介 &#xff08;1&#xff09;busybox源码中的/examples/bootfloopy/etc/profile文件内容过于简…

VirtualBox 扩展虚拟硬盘容量

为什么80%的码农都做不了架构师&#xff1f;>>> 扩展步骤&#xff1a;第一步&#xff1a;修改硬盘镜像文件 1、虚拟机关机. 2、确认虚拟机使用文件(后缀为.vdi的文件)路径不带中文字符&#xff0e; 3、Windows 下按&#xff1a;Windows R&#xff0c;调出命令行工具…

jquery控制css的display(控制元素的显示与隐藏)

使用jquery控制div的显示与隐藏: $("#div的id").show()表示display:block, $("#div的id").hide()表示display:none; $("#id").toggle()切换元素的可见状态&#xff1a;如果元素是可见的&#xff0c;切换为隐藏的&#xff1b;如果元素是隐藏的&am…

制作ext2格式的根文件系统镜像

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、首先验证文件夹形式的rootfs是否可用 设置bootargs为nfs启动方式&#xff0c;然后使用在ubuntu中做好的文件夹形式的rootfs来启动&#xff0c;查看启动效果&#xff0c;作为将来用ext2格式的root…

技术和赚钱真的冲突吗?

前几天在微信上看到篇文章&#xff0c;讲述的是大悲寺和少林寺的对比。原文的大意是大悲寺如何如何清苦&#xff0c;烧香不许客户投钱。而少林寺如何的肥头大耳&#xff0c;尤其是方丈释永信是多么多么的会“敛财“。&#xff08;注意&#xff1a;我们这里抛去一些“确实是敛财…

构造和运行模块

作者&#xff1a;蔡伦辉写在前面作者一直支持GPL的精神。允许任何人自由使用、转载、复制和再分发&#xff0c;但必须保留作者署名&#xff0c;必须保证全文完整转载&#xff0c;包括完整的版权声明。由于作者水平有限&#xff0c;因此不能保证文章内容准确无误&#xff0c;请批…

分析与构建根文件系统中的/lib目录

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 由根文件系统的目录结构_天糊土的博客-CSDN博客可知&#xff0c;/lib目录在根文件系统中也是不能省略的。该目录存放着操作系统中的动态和静态链接库文件。我们构建/lib目录&#xff0c;主要工作是是…

优化小技巧——复杂属性对象的read模式

本帖最后由 Aone 于 2013-7-27 12:23 编辑想必Rectangle或者Point这样的数据类在我们的程序中特别是当前的游戏中是非常常用的类型。那么一些类中获取这些属性的时候为了封装&#xff0c;往往会写一个get函数return一个复制的Rectangle对象给外部。目的是为了防止被获取内部rec…

从零开始构建根文件系统

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 Uboot和系统移植&#xff08;19&#xff09;------- 根文件系统构建过程详解_big__C的博客-CSDN博客 一、总结 &#xff08;1&#xff09;本节在前面的理论分析的基础上&#xff0c;我们开始从零开…

Perl常用语法记录

Perl常用语法记录##包的切换和调用其它包的方式 #package A; #my $a10;#package B; #print $A::a; #print $a;##local局部标识符的使用 #$aa20; #{ # local $aa; # $aa10; # print "$aa \n"; # #}#print $aa;##别名的使用 comment $b10; $a1; $c200; {local *b;*b*a…

关于uboot的简介——uboot常用的命令

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 linux终端设计有3种缓冲机制&#xff1a;无缓冲、行缓冲、全缓冲。 uboot提供类似linux终端的行缓冲命令行。当我们向终端命令行输入命令的时候&#xff0c;这些命令没有立即被系统识别&#xff0c…

网站分析

网网站分析(Web Analytics) 是种网站访客行为的研究。于商务应用背景来说&#xff0c;网站分析特别指的是来自某网站搜集来的资料之使用&#xff0c;以决定网站布局是否符合商业目标&#xff1b;例如&#xff0c;哪个登陆页面(landing page)比较容易刺激顾客购买欲。这些搜集来…