在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#变量类型的更多相关文章

  1. Python学习--03变量类型

    变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...

  2. 5-2 bash 脚本编程之一 变量、变量类型等

    1. bash变量类型 1. 环境变量 2. 本地变量(局部变量) 3. 位置变量 4. 特殊变量 2. 本地变量 VARNAME=VALUE, 整个bash进程 3. 环境变量 作用域为当前shel ...

  3. Javascript学习笔记:3种检测变量类型的方法

    ①typeof检测变量类型 console.log(typeof 1);//number console.log(typeof "a");//string console.log( ...

  4. 黑马程序员——C语言基础 变量类型 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...

  5. C++数据类型和变量类型。

    数据类型 数字是自由的[不只属于某个类型]!但是它可以有不同的身份!int.char.float.double等身份.它以不同的身份[存储规则]存储在内存的某个位置内部! 变量类型 内存编号是不会变的 ...

  6. MySQL服务 - MySQL变量类型及变量设置

    一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从 ...

  7. Python 变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

  8. CUDA1.1-函数类型限定符与变量类型限定符

    这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...

  9. bash脚本编程之一 变量、变量类型等

    变量的内容 1.变量命名:            1.只能包含字母.数字和下划线,并且不能以数字开头,    2.不应该跟系统中已有的环境变量重名    3.最好能见名知意 2.变量赋值: 设置变量: ...

随机推荐

  1. 如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

    weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里声明引用该libary即可,这样可大大减 ...

  2. JavaScript系列:正则表达式

    function testExecResultType() { var txt = "mom and dad and baby"; var pattern = /mom (and ...

  3. Java多线程之Runable与Thread

    Java多线程是Java开发中的基础内容,但是涉及到高并发就有很深的研究可做了. 最近看了下<Java并发实战>,发先有些地方,虽然可以理解,但是自己在应用中很难下手. 所以还是先回顾一下 ...

  4. centos7下使用yum安装mysql数据库以及设置远程访问

    CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...

  5. Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析

    本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件, ...

  6. nios II--实验7——数码管IP硬件部分

    数码管 硬件开发 新建原理图 打开Quartus II 11.0,新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 Next>  ...

  7. position为absolute的元素如何实现居中

    当给div设置absolute时,该元素已经脱离文档流,呈现浮动状态,只能通过left,top,right,bottom来设置属性,要实现居中有两种方法: 一.css法 <div class=& ...

  8. Webmin|Linux管理员远程管理工具

    介绍: Webmin is a web-based interface for system administration for Unix. Using any modern web browser ...

  9. json写入new_hello文件

    #写入new文件 import json dic = {'name':'alex'} i = 8 s = 'hello' l = [11,22] f = open("new_hello&qu ...

  10. 开发错误12:gradle编译错误:Conflict with dependency com.android.support:support-annotations

    在build.gradle中的configurations.all {}下添加:resolutionStrategy.force 'com.android.support:support-annota ...