MSDN,C#2.0
变量基本点:
变量代表存储位置(storage location);
每个变量都有个决定在变量中可以存储什么值的类型;
C#是类型安全(type-safe)的高级语言;
C# 编译器保证存储在变量中的值总是具有合适的类型;
变量的值可由赋值或++、--操作符更改;
在取值(obtain value)之前,变量必须被明确赋值;
变量初始化有两种:初始已赋值(initially assigned)和初始未赋值(initially unassigned);
一、变量分类(variable categories)
变量分为:静态变量、实例变量;本地变量;数组元素;数值参数、引用参数、输出参数七种。
class A { public static int x; //x是静态变量 int y; //y是实例变量 //v[0]是数组元素,a是数值参数,b是引用参数,c是输出参数 void F(int[] v, int a, ref int b, out int c) { int i = 1; //i是本地变量 c = a + b++; } }
1.静态变量
以static修饰符来声明的字段称为静态变量;
(1)它存在(come into existence)于包含它的类型(containing type)执行静态构建器之前;随关联的程序域(application domain)的消失而消失(cease to exist);
2.实例变量
不使用static修饰符来声明的字段称为实例变量;
(1)类中的实例变量:当类的新实例创建的时候,类的新实例存在;当不再引用实例且执行了实例的析构器后停止存在;
1'类的实例变量的初始值就是变量类型的(variable's type)缺省值;
2'出于明确的赋值检查(definite assignment checking)的目的,类的实例变量被视为(considered)初始已赋值。
(2)结构中的实例变量:结构的实例变量和它从属的结构变量(struct variable)具有完全相同的生命周期。即,如果结构类型(struct type)的变量开始存在或停止存在时,那么结构的实例变量也是如此。
(3)结构的实例变量的初始赋值状态(state) ,与包含它的结构变量相同。即,当结构变量被视为初始已赋值时,它的实例变量也被视为初始已赋值;当结构变量被视为初始未赋值时,它的实例变量同样被视为未赋值。
3.本地变量(local variables)
用本地变量声明(local-variable-declaration)所声明的本地变量,可以发生在块、for、switch或using语句中。
4.数值参数
数值参数是不使用ref或out修饰符的参数;
(1)数值参数是当调用函数成员(方法、实例构建器、访问器或运算符)时开始存在,并用调用(invocation)中给定的自变量(argument)值来初始化;
(2)随着函数成员的返回(return of the function member),数值参数停止存在;
(3)出于明确的赋值检查(assignment checking) 的目的,数值参数被视为初始已赋值(initially assigned)。
5.引用参数(reference parameter)
引用参数是用ref修饰符声明的参数;
(1)引用参数不创建新的存储空间,而是和调用(invocation)函数成员时,作为参数(given as argument)给定的变量一样,表示相同的存储位置。因此,引用参数的值总是和基本(underlying)变量相同。
(2)下面明确的赋值规则适用于引用参数
1'在函数的成员调用中,在能够作为引用参数传递之前,变量必须被明确地赋值;
2'在函数成员内(within),引用参数被视为初始已赋值的(assigned)。
(3)对于结构类型的实例方法(instance method)或实例访问器(instance accessor),this关键字的行为(behave)完全象结构类型的引用参数一样。
6.输出参数(output parameter)
输出参数是用out修饰符声明的参数;
(1)输出参数并不创建新存储空间,而是和函数成员调用(invocation)中作为参数(argument)给定的变量的存储位置相同;因此,输出参数的值总是与基础变量相同;
(2)随着函数成员调用地正常完成,作为输出参数传递的每变量,被视为在该执行路径(execution path)内被赋值;
(3)在函数成员内,输出参数被视为初始未赋值(initially unassigned);
(4)在函数成员正常返回前,函数成员的每个输出参数都必须被明确地(definitely)赋值;
(5)在结构类型(struct type)的实例构建器内,关键字this的行为与该结构类型的引用参数完全相同。
7.数组元素
当数组实例创建的时候,数组元素开始存在(come into existence);在不再引用(no references)数组实例时,停止存在。
(1)一个数组的每个元素的初始值,是数组元素类型的(type of array elements)缺省值;
(2)出于明确的赋值检查(definite assignment checking)的目的,数组元素被视为初始已赋值的(initially assigned)。
二、变量缺省值
1.变量把下列分类自动初始化为缺省值:
静态变量;
类实例(class instances)的实例变量(instance variable);
数组元素(array element).
2.变量的缺省值由变量的类型决定,遵循如下规则:
对数值类型的变量,缺省值和数值类型(value-type's)的默认构建器计算出的值相同;
对引用类型(reference-type)的变量,缺省值为null.
3.初始化为默认值的实现方法,一般是让内存管理器或垃圾回收器在分配内存以供使用之前,将内存初始化为“所有位归零”(all-bits-zero)。因此,使用所有位归零来表示空引用(null reference)很方便。
小结:本节主要是讲与变量有关的基本知识。
需明确的是变量的元义在c#中已经进化为字段,根据使用环境,分为静态变量和实例变量。
更具体的使用分成本地变量、数组元素、和参数(包括数值参数、引用参数、输出参数)。
发表评论
-
ZT,一篇好文
2010-05-03 10:33 978读读语言大牛们(其中有位是Anders)这篇文章,会很受益。( ... -
关于“匿名方法”与“lambda操作符”的实现
2010-03-24 22:29 841在<关于“回调”的实现>一文中,我们探讨了使用委托 ... -
effective hierarchy(二)之 函数合辑(2)
2009-09-16 21:29 709介绍: 本节我们来看看另外一种封装,构建件。构建件作为 ... -
effective hierarchy(二)之 函数合辑(1)
2009-08-19 14:53 760“暴露”阶段:值-> ... -
effective hierarchy(一)之 基本概念(8)
2009-07-02 23:39 659MSDN,C#2 一、语句 1.结束点和可达性(en ... -
effective hierarchy(一)之 基本概念结束篇
2009-06-30 15:41 632一、函数/功能成员(fun ... -
effective hierarchy(一)之 基本概念(7)
2009-06-23 21:15 893以下可跳过: [立记保留:到现在为止,我满意的是认真的精神。 ... -
effective hierarchy(一)之 基本概念(6)
2009-06-21 00:34 921MSDN,C#2.0 转换(conversions) ... -
effective hierarchy(一)之 基本概念(4)
2009-06-15 15:59 699MSDN,C#2.0: 一、名字空间和类型名称(nam ... -
effective hierarchy(一)之 基本概念(3)
2009-06-14 15:00 706MSDN,C#2.0: 一、签 ... -
effective hierarchy(一)之 基本概念(2)
2009-06-13 18:22 803MSDN:基本概念 一、 ... -
effective hierarchy(一) 之基本概念(1)
2009-06-11 09:37 751我告诫自己,不要忽略简单的东西,又要扎实。所以这一篇开始,专门 ... -
effective hierarchy(一)之 属性与索引器
2009-06-07 14:07 1125编程笺言:“优良的设计 ... -
effective hierarchy(一)之 从array说起(4)
2009-06-07 00:53 780回顾:上一节中,我们 ... -
effective hierarchy(一)之 从array说起(3)
2009-06-06 21:20 685回顾: 从上一节中,可以看出枚举的易用性对数组使用的启示意义 ... -
effective hierarchy(一)之 从array说起(2)
2009-06-06 09:34 662复习: 从上一节,可 ... -
effective hierarchy(一)之 从array说起(1)
2009-05-29 13:59 868MSDN(c#2.0): 数组的元义是 ... -
effective hierarchy(一)之 C#中的new
2009-05-27 23:21 816MSDN(c#2.0): 在msdn中,指出new的三种用法。 ...
相关推荐
解决这个启动 View Hierarchy时的这个bug: hierarchy viewer unable to debug device
效果及使用方法:https://blog.csdn.net/qq_26318597/article/details/131373576 1.导入插件包 2.选中Hierarchy中的物体 3.右键选择“复制Hierarchy路径” 4.Ctrl + V 粘贴
里面包含两个插件: 一个Hierarchy PRO 一个QHierarchy 插件 喜欢那个用那个 (测试unity版本 2019.4.5f1 )
Hierarchy PRO 2021 v2021.1u9
VS2010 MFC Hierarchy Chart VS2010 MFC Hierarchy Chart
Hierarchy viewer的运行原 的介绍
WPF Class Hierarchy
Evolve Your Hierarchy
IRQ hierarchy的初始化及构建过程详解
Hierarchy2 v1.3.10.0
Agilent ADS 2011 Hierarchy
Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版
*商用请支持正版* 2019/5/14更新更新的Hierarchy PRO - Auto HighLighter v21.3f1
android工具Hierarchy_Viewer命令详解
hierarchyviewer不能连接android真机问题
Unity Hierarchy面板增强插件 QHierarchy v4.4 仅供学习,请勿商用。
前端项目-d3-hierarchy,层次数据可视化布局算法。
Architecture for Extracting the Custom Hierarchies from SAP R3 System into BW System
Hierarchy Viewer工具可以用来查看视图树(View Tree)并分析视图树中各个视图在测量、布局、绘制阶段所消耗的时间。通过该工具提供的信息,开发者可以找出视图树中那些不必要的视图以及性能瓶颈。在这个demo中,...
Hierarchy PRO Presets And Selections v20.6层级编辑器强化工具最新版,对层级编辑器进行最大化的强化,很多功能,帮助编辑游戏对象,很多提示信息,可以选择要显示的内容,对开发帮助很大。