C#变量类型
在C#语言中,我们把变量分为七种类型,它们分别是:静态变量(static varibles),非静态变量(instance variables),数组元素(array elements),值参数(value parameters),引用参数(reference parameters),输出参数(output parameters),还有局部变量(local variables)。看下面的例子:
class A
{
public static int x;
int y;
void F(int[] v,int a,ref int b,out int c){
int i=1;
c=a+b++;
}
}
在上面的变量声明中,x是静态变量,y是非静态变量,v[0]是数组元素,a是值参数,b是引用参数,c是输出参数,i是局部变量。
静态变量
带有"static"修饰符声明的变量称为静态变量。一旦静态变量所属的类被装载,直到包含该类的程序运行结束时它将一直存在。静态变量的初始值就是该变量类型的默认值。为了便于定义赋值检查,静态变量最好在定义时赋值。如:
static int a=0;
非静态变量
不带有"static"修饰符声明的声明称为实例变量。如:
int a;
针对类中的非静态变量而言,一旦一个类的新的实例被创建,直到该实例不再被应用从而所在的空间被释放为止,该非静态变量将一直存在。同样鉴于定义赋值检查,一个类的非静态变量也应该在初始化时赋值。
结构中的非静态变量随着结构的存在而存在。也就是说,当一个结构类型的变量存在或结束时,该结构类型中的变量也随之存在和结束。同样的,结构中的实例变量会随着结构类型变量的初始化而被初始化,如果该结构类型变量定义时未被赋值,那么其中的实例变量也不会被赋值。
数组元素
数组元素也是变量的一种,该变量随着数组实例的存在而存在。每一个数组元素的初始值是该数组元素类型的默认值。同样鉴于定义赋值检查,数组元素最好在初始时被赋值。
局部变量
局部变量是指在一个独立的程序块,一个for语句,switch语句、或者using语句中声明的变量,它只在该范围中有效。当程序运行到这一范围时,该变量即开始生效,程序离开时变量就失效了。
与其它几种变量类型不同的是,局部变量不会被自动初始化,所以也就没有默认值。在进行赋值检查的时候,局部变量被认为没有被赋值。
在局部变量的有效范围内,在变量的定义以前就使用是不合法的,比如:
for(int i=0;i<10;i++){
int num=a; //非法,因为局部变量a还没有定义
int a;
int b=a; //正确
}
C#变量类型的更多相关文章
- Python学习--03变量类型
变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...
- 5-2 bash 脚本编程之一 变量、变量类型等
1. bash变量类型 1. 环境变量 2. 本地变量(局部变量) 3. 位置变量 4. 特殊变量 2. 本地变量 VARNAME=VALUE, 整个bash进程 3. 环境变量 作用域为当前shel ...
- Javascript学习笔记:3种检测变量类型的方法
①typeof检测变量类型 console.log(typeof 1);//number console.log(typeof "a");//string console.log( ...
- 黑马程序员——C语言基础 变量类型 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...
- C++数据类型和变量类型。
数据类型 数字是自由的[不只属于某个类型]!但是它可以有不同的身份!int.char.float.double等身份.它以不同的身份[存储规则]存储在内存的某个位置内部! 变量类型 内存编号是不会变的 ...
- MySQL服务 - MySQL变量类型及变量设置
一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从 ...
- Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
- CUDA1.1-函数类型限定符与变量类型限定符
这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...
- bash脚本编程之一 变量、变量类型等
变量的内容 1.变量命名: 1.只能包含字母.数字和下划线,并且不能以数字开头, 2.不应该跟系统中已有的环境变量重名 3.最好能见名知意 2.变量赋值: 设置变量: ...
随机推荐
- eval的对于验证数学公式的用处
var a=10,b=20; var s=a+b+((a/b)+(a+(a-b)))+(11)/a; var r=eval(s); console.log(r); 只要不报错,说明公式正确, 报错公式 ...
- ROS系统python代码测试之rostest
ROS系统中提供了测试框架,可以实现python/c++代码的单元测试,python和C++通过不同的方式实现, 之后的两篇文档分别详细介绍各自的实现步骤,以及测试结果和覆盖率的获取. ROS系统中p ...
- Ehcache 整合Spring 使用页面、对象缓存
Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...
- mvc5+ef6+Bootstrap 项目心得--WebGrid
1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...
- OS存储器管理(二)
离散分配 分页(Paging),分段,段页式 一.分页 一个进程的物理地址可以是非连续的: 将物理内存分成固定大小的块,称为块(frame): 将逻辑内存分为同样大小的块,称为页(page): ...
- SqlServer——批量操作(批量添加,删除)
批量添加数据: 一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , fir ...
- 数据源DBCP一二
其实DBCP这个数据源实际上和com.alibaba.druid.pool.DruidDataSource 是差不多的
- Web服务器磁盘满故障
问题: 硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小,即找不到硬盘分区是怎么被写满的.今天下午接到同事紧急求助,说生产线服务器硬盘满了.该删的日志都删掉了.可空间还是 ...
- C#中快速释放内存,任务管理器可查证
先close() 再dispose() 之后=null 最后GC.Collect() 如: ms.Close();//关闭流,并释放与之相关的资源 ms.Dispose();//如果是流的话,默认只会 ...
- 使用jmeter进行性能测试-Jmeter教程及技巧汇总 (转)
http://www.jmeter.cf/loadtesting-jmeter.html 为什么使用jmeter, 它免费开源, 不断发展, 功能逐渐强大. 可以做功能,负载, 性能测试.一套脚本可以 ...