C#中的变量

例如:int i;//声明一个int类型的变量,变量名是 i;在未为该变量进行赋值操作前,禁止使用该变量.使用(=)给变量赋值,在声明之后可以 i=10来赋值.也可以在声明一个变量的同时给它初始化例如:int i=10;也可以这样声明int x=10,y=20;这表示x和y都是int类型的变量.

声明不同的变量需要使用不同的语句,即没生命一个变量都需要用(;)来分割开来,例如:int i=0;int a=10;int b=20;

在声明一个变量的时候一定要对其进行初始化,因为这样做可以防止我们我一种从其他程序遗留下来的内存中获取垃圾值.

C#中有两个方法可以确保变量在使用之前进行了初始化:

1:变量是类或者结构中的字段,如没有进行显示初始化,创建这些变量的时候,默认值是0.

2.方法的局部变量必须在代码中显示的初始化,之后次啊能在与剧中使用它们的值.例如:

public static void Main()

{

int i;

Console.WriteLine(i);//在编译的时候会报错,原因是没有进行初始化或者赋值操作便使用该变量.

}

类型推断使用var关键字,声明变量的语法有些变化.编译器可以根据变量的初始化值来”判断”变量的类型.例如:

var name = "zhangsan";

var age = 24;

var isRabbit = true;

Type nameType = name.GetType();

Type ageType = age.GetType();

Type isRabbitType = isRabbit.GetType();

Console.WriteLine(nameType.ToString());

Console.WriteLine(ageType.ToString());

Console.WriteLine(isRabbitType.ToString());

Console.ReadKey();

程序的输出结果为:

System.String

System.Int32

System.Bool

在声明推断类型的变量的时候一定要初始化,否者编译器没有推断变量类型的依据.

声明了变量,推断出了类型后就不能改变变量的类型了.例如:var name=”zhangsan”;name=90;这是不对的.

变量的作用域:就是一个变量的有效范围.作用域是离变量最近的一对花括号就是该变量的作用域.在for,while或者类似语句中声明的局部变量存在于该循环体内.

另外同一个变量不能声明两次.下两两个例子帮助理解:

for (int i = 0; i < 10; i++)

{

Console.WriteLine(i);

}

for (int i = 9; i >=  0; i--)

{

Console.WriteLine(i);

}

可以这么做的原因为第一个i在第一个循环中有效,第二个i在第二个循环中有效,互不影响.

但是如果这样:

int j = 0;

for (int i = 0; i < 10; i++)

{

int j = 20;

Console.WriteLine(j);

}

则会产生错误.原因为是第一个j的作用域包含了循环中的j,所以产生了相当于二次定义的错误.

namespace day1

{

class Program

{

static int j = 10;//这是类级别的变量,相当于全局变量

static void Main(string[] args)

{

int j = 20;//这是方法级别的变量.

for (int i = 0; i < 10; i++)

{

Console.WriteLine(j);

}

Console.ReadKey();

}

}

}

可以得出,一个变量在一个方法中不能声明两次;类级别的变量可以和方法级别的变量同名,但是在使用改变量的时候的时候遵循就近原则,通常是使用方法级别的变量.

如果想要使用类级别的变量可以用类名.变量名使用该变量

class Program

{

static int j = 10;

static void Main(string[] args)

{

int j = 20;

Console.WriteLine(j);//输出结果为20

Console.WriteLine(Program.j);//输出结果为10,类级别的变量.

Console.ReadKey();

}

}

 

C#编程(二)的更多相关文章

  1. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  2. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题

    1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...

  3. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  4. Python进阶之面向对象编程(二)

    Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  5. Linux网络编程(二)

    Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...

  6. java GUI编程二

    java基础学习总结--GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import j ...

  7. Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    这篇文章主要介绍了Java Socket聊天室编程(二)之利用socket实现单聊聊天室的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在上篇文章Java Socket聊天室编程(一)之 ...

  8. s3c2440裸机-时钟编程(二、配置时钟寄存器)

    s3c2440裸机编程-时钟编程(二.配置时钟寄存器) 1.2440时钟时序 下图是2440时钟配置时序: 1.上电后,nRESET复位信号拉低,此时cpu还无法取指令工作. 2.nRESET复位信号 ...

  9. python异步IO编程(二)

    python异步IO编程(二) 目录 开门见山 Async IO设计模式 事件循环 asyncio 中的其他顶层函数 开门见山 下面我们用两个简单的例子来让你对异步IO有所了解 import asyn ...

  10. 量子计算机编程(二)——QPU基础函数

    第二部分主要是QPU的基础功能,第一部分就像是我们有了哪些基本的语句,第二部分就是我们能写一些简单基础的函数,一些小模块,第三部分就是他的应用了. 先来看一下一个简单量子应用的结构: 第一步,将量子态 ...

随机推荐

  1. SQL语句添加删除修改字段[sql server 2000/2005]

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...

  2. Docker容器跨主机通信之:直接路由方式

    一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker ...

  3. 20165203《Java程序设计》第七周Java学习总结

    20165203<Java程序设计>第七周Java学习总结 教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世 ...

  4. 手工增加Mapping

    [root@es ~]# curl -H "Content-Type:application/json" -XPOST "http://127.0.0.1:9200/t_ ...

  5. snmp常见操作

    常用snmp OID说明下面这些值可以手动连接进行获取数据: 用zabbix监控交换机和路由器需要一款能够获取网络设备OID的工具,可用getif来获得OID 也可以使用snmpwalk 配置交换机的 ...

  6. 【LOJ】#2558. 「LNOI2014」LCA

    题解 当年LN还是有专门的省选题的,但是还不如没有 看到这道题,我就想到了一个清晰易懂,简单好写,代码优美的树链剖分线段树套主席树的\(O(q\log^{3}n)\)做法,且就5组数据出题人肯定是不会 ...

  7. 【洛谷】P2179 [NOI2012]骑行川藏

    题解 感谢小迪给我讲题啊,这题小迪写挺好的我就不写了吧 小迪的题解 代码 #include <iostream> #include <cstdio> #include < ...

  8. htm5本地存储方案——websql的封装

    一.websql 简介   在HTML5中,大大丰富了客户端本地可以存储的内容,添加了很多功能来将原本必须保存在服务器上的数据转为保存在客户端本地,从而大大提高了Web应用程序的性能,减轻了服务器端的 ...

  9. thinkphp 5.0如何实现自定义404(异常处理)页面

    404页面是客户端在浏览网页时,由于服务器无法正常提供信息,或是服务器无法回应,且不知道原因所返回的页面.404承载着用户体验与SEO优化的重任.404页面通常为用户访问了网站上不存在或已删除的页面, ...

  10. [leetcode greedy]45. Jump Game II

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...