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 ...
随机推荐
- [二]JQueryMobile常用的组件介绍
1.页头.主要部门.页尾构成一个基本的页面 2.按钮组件(input.a) 3.列表组件(ul) 4.表格组件(table)
- 幻灯片(jquery实现)
html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- Styles and Themes
1 概念 1.1 style Style是指一个关于组件或窗口的特定显示方式的属性集合,Style.xml资源文件与对应的layout.xml资源文件分开定义.Android中的style使用网页设计 ...
- JavaScript Source Map 详解
源码地址: http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html 上周,jQuery 1.9发布. 这是2.0版之前的最后 ...
- 详解UML中的聚合,关联,泛化等关系
1. Overview UML设计类中,类的关系分为Generalization(泛化),Dependency(依赖关系).Association(关联关系).Aggregation(聚合关系).Co ...
- SCO连接AD / SCOM
SCO安装完成后,下载IP包,打开Deployment Manager注册IP包,并将其部属到Runbook Server SCO IP包下载地址:http://technet.microsoft.c ...
- (DP6.1.2.1)UVA 147 Dollars(子集和问题)
/* * UVA_147.cpp * * Created on: 2013年10月12日 * Author: Administrator */ #include <iostream> #i ...
- 基于新浪sae使用php生成图片发布图文微博
1.生成图片的代码: <?php header ("Content-type: image/png"); mb_internal_encoding("UTF-8&q ...
- GridView拖动效果实现
GridView拖动效果实现 1. 重新GridView控件 package com.whbs.drag.widget; import com.whbs.drag.DragGridActivit ...
- 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
#include<iostream> #include<string> #include<vector> #include<fstream> using ...