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. snmp常见操作

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

  2. mongodb优化篇

    在掌握了mongo的体系结构和基本操作后,开始学习 mongodb的优化,由于资源有限,只能网络上整理一些资料,我大致理解的mongo的优化分为以下几步:  1.监控 mongodb可以通过profi ...

  3. linux 101 hacks 6history 及相关关键字

    如果你经常使用命令行,那么有效的使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌握了我在下面给出的 15 个例子, 你就会发现使用命令行将更有乐趣 是吗?我学一学呢 技巧 50:使用 HIST ...

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

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

  5. 在LINUX环境下定时执行php脚本

    1. 使用Crontab定时执行linux环境下的php脚本文件 Cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 c ...

  6. 基于spring-boot的应用程序的单元测试方案

    概述 本文主要介绍如何对基于spring-boot的web应用编写单元测试.集成测试的代码. 此类应用的架构图一般如下所示: 我们项目的程序,对应到上图中的web应用部分.这部分一般分为Control ...

  7. CAT 3.0 开源发布,支持多语言客户端及多项性能提升

    项目背景 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统.美团点评基础架构部希望在基础存储.高性能通信.大规模在线访问 ...

  8. [代码审计]某开源商城前台getshell

    0x00 前言 这套系统搞了有点久了,漏洞是发现了,但一直卡在某个地方迟迟没拿下来. 下面就分享一下自己审这套系统的整个过程. 0x01 系统简介 略   0x02 审计入口 看到inc\functi ...

  9. load Properties

    /* */ public static final Properties loadProperties(String propertyFileRelativePath) /* */ { /* 67 * ...

  10. python2和python3同时安装

    现在很多项目用python2完成的,很多情况下2和3是同时存在的 大多人都是先安装了python2 安装python3: 下一步: 然后安装完成以后,去cmd控制台输入python看看安装成功了吗(用 ...