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.变量赋值: 设置变量: ...
随机推荐
- linux ISO/IMG make
sudo dd if=/PATH/*.ISO of=/dev/sdb 1.制作启动U盘需要sdb,不能sdb1,否则会提示isolinux.bin文件丢失 2.TF卡,设置sdb1?忘了 /* sy ...
- TinyFrame升级之四:IOC容器
在这个框架中,我们使用Autofac作为IOC容器,来实现控制反转,依赖注入的目的. 在程序加载的时候,我需要将系统中所有用到的接口与之对应的实现进行装载.由于用户交互部分是在TinyFrame.We ...
- .net RPC框架选型
近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏.RPC技术,我们的产品 ...
- Spring MVC 急速集成 Shiro 实录
相信有很多的程序员,不愿意进行用户管理这块代码实现. 原因之一,不同的JavaEE 系统,用户管理都会有个性化的实现,逻辑很繁琐. 而且是系统门面,以后背锅的几率非常大,可谓是低收益高风险. 最近在系 ...
- 程序猿看小说还要去找TXT?自己动手爬一个TXT才是正确的打开方式
前言 在贴吧看了个小说追了几天被删帖了,于是自己找书名,打算下载下来看,结果要么是需要充值,要么不提供下载.作为一个猿类,怎么能忍. 好在小说网站多入牛毛,有的采用js加载文字来防采集,有的用css图 ...
- 创业这三年¥.NET之尴尬处境
创业这三年#迈出第一步 创业这三年@各种奇遇 之前写的文章有兴趣的大家可以看看. 本来没有打算写这样一篇会遭人拍砖的文章,但是发现大家每天忙于编码,对市场环境..Net生态没有一个真实.多角度的认识, ...
- .net程序员转行做手游开发经历(三)
这次就主要讲讲我们开发的过程. 策划是我们团队的一个人成员专门负责,我们几个算是出谋划策.我这边的理解是,策划首先需要对所做的事情一定要有一定的把握,意思是尽可能的想到这件事情的影响范围,类似项目管理 ...
- gravity、layout_gravity及orientation
gravity.layout_gravity及orientation 最近在弄一个简单的界面:横向,添加一张准备好的背景图,在界面右边居中放置一个按钮.实现过程中发现对布局的主要属性没有想象中地那么熟 ...
- 【JavaEE企业应用实战学习记录】optiontransferselect实现两个列表选择框
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@tagl ...
- UITextView的使用详解
//初始化并定义大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; te ...