ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .net框架笔记常数与字段

.net框架笔记常数与字段

原创 Linux操作系统 作者:iDotNetSpace 时间:2008-09-16 13:10:32 0 删除 编辑

一.常数(const)

定义一个常数时,我们必须能够在编译时确定它的值.通过编译后,编译器将常数的值保存在其所定义模块的元数据内.这意味着常数的类型只能是那些编译器认为的基元类型。(c#中,下面的类型可以称为基元类型, Boolean.char.byte,sbyte,decimal,int16,uint16,int32,uint32,int64,uint64,single,double以及string,枚举类型由于本身以基元类型形式存储,故也可以被用来定义常数,但它不是基元类型)

只有基元类型的数据成员在编译时直接进行初始化.而非基元类型的数据成员只能在运行时调用构造器来完成初始化.

常数在运行时不再需要任何的内存分配.也不能获取常数的地址,

二.字段(readonly)

字段保存一个值类型的实例,或一个指向引用类型的引用.在该类型被加载进入一个应用程序时为其分配动态内存.

因为字段是以动态内存的形式存储的.因此只能在运行时刻获取他们的值,

有只读字段和读写字段两种.

只读字段只能在构造器内被赋值(构造器在对象初次创建时被执行,且只执行一次).对于静态只读字段,则只能在静态构造器内赋值.

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1
 2    class SomeType
 3    {
 4        //一个静态只读字段,它的值将在运行时
 5        //类被初始化时计算并存储在内存中
 6        public static readonly Random random = new Random();
 7
 8        //一个静态读写字段
 9        static int numberofWrites = 0;
10
11        //一个实例只读字段
12        public readonly string pathName = "untitled";
13
14        //一个实例读写字段
15        public System.IO.FileStream fs;
16
17        public SomeType(string pathName)
18        { 
19            //该行修改只读字段pathName
20            //因为是在构造器中,所以可以
21            this.pathName = pathName;
22        }

23
24        public String DoSomeThing()
25        {
26            //该行首先读取静态读写字段,然后又被赋值
27            numberofWrites = numberofWrites + 1;
28
29            //该行读取实例只读字段
30            return pathName;
31        }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-448597/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766495