C#中const 和 readonly 修饰符的用法详解

1. 只有C#内置类型(int,double,long等)可以声明为const;结果、类和数组不能声明为const。

2. readonly 是在字段上使用的修饰符,直接以类名.字段访问。

3. const 必须在申明中初始化。之后不能再修改。

4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改。

namespace const_and_readonly
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Half a year have {0} Moths", Calendar.Moths/2); //直接类名.字段访问const字段
Calendar test1 = new Calendar();
Console.WriteLine("Every year has {0} weeks and {1} days", test1._weeks, test1._days);//readonly字段通过实例访问
Calendar test2 = new Calendar(31, 4);
Console.WriteLine("January has {0} weeks and {1} days", test2._weeks ,test2 ._days);
Console.ReadKey();
}
}
class Calendar
{
public const int Moths = 12; //const必须在声明中初始化
public readonly int _days=365; //readonly在声明中初始化
public readonly int _weeks;
public Calendar() //readonly在构造函数内初始化
{
_weeks = 52;
}
public Calendar(int days,int weeks) //readonly在构造函数内初始化
{
_days = days;
_weeks = weeks;
}
public void setvalue(int days,int weeks)
{
// _days = days; 无法对只读字段赋值
//_weeks = weeks; 无法对只读字段赋值
}
}

以上所述是小编给大家介绍的C#中const 和 readonly 修饰符的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C#计算汽车行驶方向的方法分析

    本文实例分析了C#计算汽车行驶方向的方法.分享给大家供大家参考,具体如下: 1.  场景:已知汽车行驶过程中的2个GPS坐标点A(n1,e1),B(e),计算它行驶的方向. 2. 分析:如上图所示,知道了两个点A.B,可以假设一个C点,让三个点构成一个直角三角形.现在可以知道,A,B,C三点的GPS坐标就很容易求出三个角的对边长度a,b,c.根据余弦定下CosB=(a2+c2-b2)/2ac,就可以求出CosB的值. 3.C#实现代码. /// <summary> ///计算两点GPS坐标的距

  • C#学习笔记整理_变量等基础语法(必看篇)

    C#学习笔记1: 变量的作用域冲突时,调用实例变量:this.a,调用类变量:类名.a 常量总是静态的,必须初始化,一般用全大写格式,声明关键字为const,如const int NUNBE = 10; C#的基本预定义类型内置于.NET Framework结构中(System),object是基类: 整型:System.SByte.System.Int16.System.Int32.System.Int64 有符号的8位.16位.32位.64位分别表示为sbyte.short.int.long

  • C#中Json的简单处理方法

    命名空间:Windows.Data.Json 在Windows Runtime中,可以使用Json类对获取的Json字符串进行操作,相比DataContractJsonSerializer类操作更加直观. 例如获取一个绕口令API返回的Json中的对象: //返回的Json字符串: { "code":200, "msg":"success", "newslist":[ { "content":"小

  • C#如何消除验证码图片的锯齿效果

    引言 基于生成图片实现了一个手机号转图片的需求. 内容也很简单,直接用手机号生成一个png图片.就是为了背景透明以便其他地方调用. 有无锯齿主要依靠一句代码:g.TextRenderingHint= TextRenderingHint.AntiAlias; 生成图片   1.有锯齿 2.无锯齿 生成方法 string color = "#ff6633"; System.Drawing.Bitmap image = new System.Drawing.Bitmap(170, 35);

  • C#窗体布局方式详解

    DataGridView: 显示数据表 后台数据绑定: List<xxx> list = new List<xxx>(); dataGridView1.DataSource = list; //设置不自动生成列,此属性在属性面板中没有 dataGridView1.AutoGenerateColumns = false; //取消加载默认选中第一行 dataGridView1.ClearSelection(); 前台: 小三角箭头,取消可编辑,添加,删除功能: Columns集合属性

  • C#学习笔记整理_浅谈Math类的方法

    c#中Math类的方法 Math.Abs 已重载. 返回指定数字的绝对值. Math.Acos 返回余弦值为指定数字的角度. Math.Asin 返回正弦值为指定数字的角度. Math.Atan 返回正切值为指定数字的角度. Math.Atan2 返回正切值为两个指定数字的商的角度. Math.BigMul 生成两个 32 位数字的完整乘积. Math.Ceiling 已重载. 返回大于或等于指定数字的最小整数. Math.Cos 返回指定角度的余弦值. Math.Cosh 返回指定角度的双曲余

  • C#隐藏手机号、邮箱等敏感信息的实现方法

    Intro 做项目的时候,页面上有一些敏感信息,需要用"*"隐藏一些比较重要的信息,于是打算写一个通用的方法. Let's do it ! Method 1:指定左右字符数量 Method 1.1 中间的*的个数和实际长度有关 /// <summary> /// 隐藏敏感信息 /// </summary> /// <param name="info">信息实体</param> /// <param name=&q

  • C#学习笔记整理_深入剖析构造函数、析构函数

    构造函数.析构函数 构造函数: 1.若没提供任何构造函数,则系统会自动提供一个默认的构造函数,初始化所有成员为默认值(引用类型为空引用null,值类型为0,bool类型为false): 2.若提供了带参数的构造函数,则系统不提供默认的构造函数: 3.构造函数可重载:可提供多个不同版本的构造函数,依据参数的个数.类型来区分: 4.私有构造函数:则无法通过该构造函数实例化该对象,可通过调用静态函数来实例化:当仅用作某些静态成员或属性的容器时,可定义私有构造函数来防止被实例化: 一般的构造函数都是实例

  • C#中const 和 readonly 修饰符的用法详解

    1. 只有C#内置类型(int,double,long等)可以声明为const;结果.类和数组不能声明为const. 2. readonly 是在字段上使用的修饰符,直接以类名.字段访问. 3. const 必须在申明中初始化.之后不能再修改. 4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改. namespace const_and_readonly { class Program { static void Main(string[] args) { Co

  • Vue3父子组件传参有关sync修饰符的用法详解

    目录 单向数据流讲解 Vue2.x使用 定义事件的形式, 通知父组件修改 .sync 和 update: 的使用 父传子, 传递多个数据的简写 采用v-model简写(要求严格) Vue3.x使用 普通用法 简写 单向数据流讲解 单向数据流(堆可以修改,栈不可修改) 我们都知道, 父传子的数据, 是单向数据流,即子组件不能直接修改, 父组件传递过来的值 但实际上, 对于修改值, 真正是:基本数据类型不可修改,复杂数据类型不要修改引用地址(栈),它的值可以随便修改 Vue2.x使用 定义事件的形式

  • Vue常用的修饰符的作用详解

    目录 一.Vue的修饰符是什么 二.修饰符的作用 1.表单修饰符 2.事件修饰符 3.鼠标按钮修饰符 4.键盘修饰符 5.v-bind修饰符 三.常用的应用场景 一.Vue的修饰符是什么 Vue中的修饰符分为以下五种: 表单修饰符: 事件修饰符: 鼠标按键修饰符: 键值修饰符: v-bind修饰符. 二.修饰符的作用 1.表单修饰符 修饰符 作用 使用 lazy 填完信息,光标离开标签的时候,才会将值赋予给value <input type="text" v-model.lazy

  • ES6中Array.find()和findIndex()函数的用法详解

    ES6为Array增加了find(),findIndex函数. find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined. findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1. 他们的都是一个查找回调函数. [1, 2, 3, 4].find((value, index, arr) => { }) 查找函数有三个参数. value:每一次迭代查找的数组元素. index:每一次迭代查找的数组元素索引. arr:被查找的数组. 例: 1.查找

  • java中的抽象类和接口定义与用法详解

    目录 一.抽象类 1.什么叫抽象类? 2.抽象类的特点: 3.成员特点: 二.接口 1.接口是什么? 2.接口的特点 3.接口的组成成员 4.类与抽象的关系: 5.抽象类与接口的区别: 一.抽象类 1.什么叫抽象类? 例如在生活中我们都把狗和猫归为动物着一类中,但当只说动物时,我们是不知道是猫还是狗还是其他的.所以动物就是所谓的抽象类,猫和狗则是具体的类了.因此在Java中,一个没有方法体的方法应该定义为抽象类,而类中有抽象方法,则必须为抽象类. 2.抽象类的特点: 抽象类与抽象方法必须用abs

  • C语言中回调函数和qsort函数的用法详解

    目录 回调函数 指向函数指针数组的指针 qsort(qulick sort)-库函数 回调函数 通过函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数. 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 举例: #include<stdio.h> void menu() { printf("*************************

  • JS中的Replace()传入函数时的用法详解

    replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串.. 废话不多说了,直接给大家贴代码了,具体代码如下所示: <script> var str = "a1ba2b"; var reg = /a.b/g; str = str.replace(reg,func

  • Python在信息学竞赛中的运用及Python的基本用法(详解)

    前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在<算法竞赛入门经典-训练指南>中所说的一样,如果会用Python,在进行一些小程序的编写,如数据生成器时将会非常方便,它的语法决定了其简约性.本文主要介绍一下简单的Python用法,不会深入. Python的安装和实用 Linux(以Ubuntu系统为例) 一般的Linux都自带了Python,在命令行中输入Python即可进入 如果没有出现上图的文字,可以使

  • 浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' grant delete on testdb.* to c

  • MySql中的IFNULL、NULLIF和ISNULL用法详解

    今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下: mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0. mysql> select isnull(1+1); -> 0 mysql> select isnull(1/0); -> 1 使用= 的null 值对比通常是错误的. isnull() 函数同 is nul

随机推荐