c#只读字段和常量的区别,以及静态构造函数的使用实例

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// 作者:it小金
    /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(test.a);
            Console.WriteLine(test.b);
            Console.Read();

}

}
    public class test
    {
        public static readonly int b;//只读字段可以使用static关键字,只读字段可以不进行初始化赋值,只读字段只能在构造函数或变量初始化时进行赋值
        public const int a=1;//常量不可以使用static关键字,常量必须在定义的时候进行初始化进行赋值

static test()//静态构造函数,类实例化之前调用执行,且只执行一次
        {

b = 2;//因为是只读字段,所以只能在构造函数中进行初始化,且改只读字段为static类型,所以需在静态构造函数中进行赋值
        }
        void aa()
        {
            //a = 1;错误
            //b=1;错误
        }

}
}

(0)

相关推荐

  • C#中常量和只读变量的区别小结

    常量和只读变量有以下区别: 1.常量必须在声明时就被初始化,指定了值后就不能修改了.只读字段可以在声明时被初始化,也可以在构造函数中指定初始化的值,在构造以后值就不能修改. 2.常量是静态的,而只读字段可以是静态和动态的 3.Const可以用在字段和局部变量,readonly只可以修饰字段

  • C# 基础入门--常量

    常量,顾名思义,就是"不会改变的量". 我们平时书写的数字(比如12.85).字符(比如'F').字符串(比如"谢谢"),它们都属于"字面常量". 有一些常量既重要又容易出错,比如圆周率π的值为3.1415926......,所以,我们常常会使用自定义常量.如: namespace Test { class Program { static void Main(string[] args) { const double PI = 3.141592

  • C#之CLR内存字符串常量池(string)

    C#中的string是比特殊的类,说引用类型,但不存在堆里面,而且String str=new String("HelloWorld")这样的重装也说没有的. 我们先来看一个方法: class Program { static void Main(string[] args) { String s = "HelloWorld"; Console.WriteLine(s); } } 然后我们用ildasm.exe工具把它生成IL语言来看一看它里面是怎么玩的: .met

  • 解析C#中的常量及如何在C#编程中定义常量

    常量是在编译时已知并在程序的生存期内不发生更改的不可变值.常量使用 const 修饰符进行声明.只有 C# 内置类型(System.Object 除外)可以声明为 const. 用户定义的类型(包括类.结构和数组)不能为 const.请使用 readonly 修饰符创建在运行时初始化一次即不可再更改的类.结构或数组. C# 不支持 const 方法.属性或事件. 可以使用枚举类型为整数内置类型(例如 int.uint.long 等等)定义命名常量. 常量必须在声明时初始化.例如: class C

  • C# 定义常量 两种实现方法

    在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant).前者用"const"来定义,后者用"readonly"来定义. 对于静态常量(Compile-time constant),它的书写方式如下: public const int MAX_VALUE = 10; 为什么称它为静态常量呢,因为如上声明可以按照如下理解(注意:如下书写是错误的,会出编译错误,这里只是为了方便说

  • c# 常量和字段

    它的值是在编译时确定的.编译器将常量保存到程序集的元数据中,所有只能是编译器认识的基元类型作为常量. 常量被看成类的一部分,是看出静态成员. 代码引用一个常量符号,会在定义常量的元数据中查找该符号,提取之,并嵌入代码,生成的IL中是值本身. 在c#中使用的是const关键字. 字段:已一种数据成员,可以容纳任何的数据类型,不仅仅想常量一样只能存储基元类型. CLR支持类型字段和实例字段 类型字段:用于容纳字段数据的动态内存是在类型对象中分配的, 而类对象是在类型加载到一个AppDomain中创建

  • 浅谈C#中的常量、类型推断和作用域

    一.常量常量是其值在使用过程中不会发生变化的变量.在声明和初始化变量时,在变量前面家关键字const,就可以把该变量指定为一个常量: const int a=100;//a的值将不可以改变 常量的特征: 1.常量必须在声明时初始化.指定了其值以后,就不能再修改了.2.常量的值必须能在编译时用于计算.因此不能从一个变量中提取的值来初始化常量.如果需要这么做,应该使用只读字段.3.常量总是静态的,但注意,不必在常量的声明中包含修饰符static.(实际上,不允许)在程序中使用常量至少有3个好处: 1

  • c#只读字段和常量的区别,以及静态构造函数的使用实例

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{    /// <summary>    /// 作者:it小金    /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用    /// </summary>    class Program    {        stat

  • 详解Java枚举与接口常量和类常量的区别

    目录 一个简单的需求 接口常量 类常量 枚举 什么是枚举 枚举常量 限制输入的类型 枚举可以使用==来比较吗 枚举实现单例 一个简单的需求 在我们实际开发java项目过程中,突然有一天"领导老王"给了个任务, 公司系统需要支持商品管理的需求 比如水果有:苹果,香蕉,葡萄等等,电子产品有:电脑,手机,摄像机等等 我们一般新建商品类Goods: public class Goods { /** * 商品名称 */ private String name; /** * 商品类型 */ pri

  • PHP中define() 与 const定义常量的区别详解

    本文实例讲述了PHP中define() 与 const定义常量的区别.分享给大家供大家参考,具体如下: 前言 今天在Stackoverflow又看到一个很有趣的文章,所以翻译过后摘了过来.文章是由PHP开发成员之一的NikiC写的,权威性自然毋庸置疑 正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于const会在代码编译时定义一个常量,而def

  • Oracle删除字段中的空格、回车及指定字符的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: create or replace procedure PROC_test is --Description:删除字段中的指定字符(回车chr(13).换行chr(10)) --By LiChao --Date:2016-03-01 colname varchar(20); --列名 cnt number; --包含换行符的列的行数 v_sql varchar(2000); --动态SQL变量 begin --读取表中的列 for col i

  • ASP.NET Core依赖注入详解

    目录 一.什么是依赖注入 二.使用框架提供的服务 三.注册服务 四.生命周期 五.请求服务 六.设计你的依赖服务 ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core应用程序可以利用内置的框架服务将它们注入到启动类的方法中,并且应用程序服务能够配置注入.由ASP.NET Core提供的默认服务容器提供了最小功能集,并不是要取代其它容器. 一.什么是依赖注入 依赖注入(Dependency injection,DI)是一种实现对象及其合作者或依赖项之间松散耦合的技术.将类

  • C# 静态构造函数使用总结

    •静态构造函数既没有访问修饰符,也没有参数. •如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数. •在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了. •如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行. •如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运

  • 浅析C#静态类,静态构造函数,静态变量

    静态变量 静态变量位于栈上,它是一个全局变量,在编译期就已经生成. public class Cow { public static int count; private int id; public Cow() { id = ++count; } } 客户端创建2个Cow的实例,并打印静态变量count. static void Main(string[] args) { Console.WriteLine(Cow.count); Cow cow1 = new Cow(); Cow cow2

  • C#中字段、属性、只读、构造函数赋值、反射赋值的问题

    C#中字段.属性和构造函数赋值的问题提出问题如下所述: 首先提出几个问题: 1.如何实现自己的注入框架? 2.字段和自动属性的区别是什么? 3.字段和自动属性声明时的直接赋值和构造函数赋值有什么区别? 4.为什么只读字段和只读自动属性(只有get没有set访问器)都可以在构造函数中进行赋值? 5.反射可以给只读字段或者只读属性进行赋值吗? 6.自动属性和普通属性的区别? 这些问题是我在试着写自己的注入实现时遇到的问题.这些问题应该在学习C#时的第一节课就应该学到了,我看网上还有人分享说他在面试时

  • Mysql中count(*)、count(1)、count(主键id)与count(字段)的区别

    目录 count()函数 count(*).count(1) .count(主键id) 和 count(字段) 区别 count(主键id) 与 count(1) count(字段) count(非空字段) count(可空字段) count(*) 执行效率 执行效果上: 执行效率上: 实例分析 count()函数 count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加.最后返回累计值. count(*).count(

随机推荐