C#常量字段
const 常量字段使用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project5_42
{
class Program
{
static void Main(string[] args)
{
ConvertUnits cu = new ConvertUnits();
//const修饰的字段在编译时自动编译为static类型字段,可以直接通过类名来访问,
//但是在声明显示声明为为static则会导致编译失败
Console.WriteLine(ConvertUnits.CupsPerGallon);
}
}
class ConvertUnits
{
public const float CentimetersPerInch = 2.54F;
public const int CupsPerGallon = 16;
//const类型的字段声明时不能声明为static
//public static const float PI=3.141592654F;
}
}
“public常量应该恒定不变,因为一个程序集引用了另一个程序集中的常量,常量将直接编译到引用程序集中,当被引用的程序集中的常量发生变化之后如果没有
进行重新编译,引用程序集中的常量将还是原始值。”
对上面的一段话在VS2013中进行了验证,包括在同一个解决方案中创建一个dll项目和一个引用此dll的项目,以及在一个工程中创建dll项目而在另一个项目中引用,在只编译dll项目而不编译引用dll的项目的情况下,dll项目中对常量做出的更改仍能正确反映到引用项目中,而并没有出现作者提到的问题。但是为了避免万无一失,最好还是避免这样的使用方法,而是采用作者下面提到的使用readonly字段。
将来可能产生改变的值应该指定为readonly,不要定义为常量。
readonly修饰符只能用于字段,用来指出字段值只能从构造器中更改,或者直接在声明时制定。与const用法的区别就是const适合用在类似圆周率,阿伏伽德罗常数等不变的量,而readonly是在构造函数中进行初始化的,每个实例的readonly字段都可以不同,区别在于readonly字段可以在执行时进行赋值,而const只能在编译时进行赋值。readonly字段需要在构造函数中进行初始化,所以编译器要求readonly字段可以在属性外部进行访问,但是除了这个特例之外,不要从除了包容属性之外的任何地方访问属性的支持字段。
C#常量字段的更多相关文章
- android官方技术文档翻译——Case 标签中的常量字段
本文译自androd官方技术文档<Non-constant Fields in Case Labels>,原文地址:http://tools.android.com/tips/non-co ...
- idea设置方法或常量字段上浮显示对应的注释内容
1.进入idea中,如下图进入设置 如图勾选并设置显示延迟时间 打开文件进行鼠标移动测试 可以看到鼠标移动到字段常量或方法上时显示了对应的注释类容
- C#学习笔记——常量、字段以及事件
一 常量与字段 (一) 常量 常量总是被视为静态成员,而不是实例成员.定义常量将导致创建元数据.代码引用一个常量时,编译器会在定义常量的程序集的元数据中查找该符号,提取常量的值,并将值嵌入IL中.由于 ...
- 破解C#的readonly只读字段
破解C#的readonly只读字段 目录 请允许我再唠叨几句const和readonly 修改readonly字段: 计策1:反间计 -- 反射修改 计策2:借刀杀人--调节字段偏移位置的结构体来修改 ...
- Programming C#.Classes and Objects.只读字段
只读字段 当字段声明中含有 readonly 修饰符时,该声明所引入的字段为只读字段.给只读字段的直接赋值只能作为声明的组成部分出现,或在同一类中的实例构造函数或静态构造函数中出现.(在这些上下文中, ...
- c#中常量、ReadOnly和Static ReadOnly的差异
不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://www.arungudelli.com/tutorial ...
- C#学习-字段
字段的定义由3部分组成,访问修饰符.字段的类型和字段的名称.以下是 public class Person { //姓名,类型为字符串类型 private string name; //年龄,类型为i ...
- #region 常量和静态变量静态类readonly
#region 常量和静态变量静态类readonly //---------------------------------------------------------------------- ...
- const与readonly常量
const与readonly常量 const与readonly都是用来定义常量,但是它们有什么区别呢? 下面我们来简要的说明一下: const修饰的常量是编译时常量,如:public const St ...
随机推荐
- input输入密码变黑点密文
input输入密码加密 html代码 <form id="login-form" method="post" onsubmit="return ...
- CSS滤镜
Filter属性介绍 Alpha滤镜的使用 Blur滤镜的使用 Filph.Filpv滤镜 DropShadow滤镜 Glow 滤镜 Gray ,Invert,Xray 滤镜 Shadow滤镜 19. ...
- 爬去知乎百万用户信息之UserTask
UserTask是获取用户信息的爬虫模块 public class UserManage { private string html; private string url_token; } 构造函数 ...
- GDB 入门篇
调试流程:(使用gcc编译时加上 -g -Wall选项)gdb attach pidinfo bb filename:linenum / b filename:functionnamecp varia ...
- MYSQL- 存储过程示例
最近需要用到MYSQL,没耐心从头到尾,慢慢了解了,需要什么直接百度,直接了解,从实战中学习. 看一下MYSQL存储过程的示例: CREATE PROCEDURE plogin ( p_usernam ...
- 测试JS基本类型以及对象的引用
自己敲的. 1 <script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js&qu ...
- JS 添加千分位,测试可以使用
JS 添加千分位,测试可以使用 <script language="javascript" type="text/javascript">funct ...
- WM_VSCROLL
关键点 控制滚动条在最下面 实现过程 SendMessage(form1.Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0); 图 备注 相关链接 来自为知笔记(Wiz)
- SQL Server日期时间格式转换字符串详解
本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...
- careercup-中等难度 17.12
17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对. 解答 时间复杂度O(n)的解法 我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我 ...