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. linux开启端口

    开放端口的方法: 方法一:命令行方式               1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT    ...

  2. CentOS 7.2 下 PXE+kickstart 自动安装系统

    一.简单概述 1.1 Kickstart 概述 对于网络安装系统,在linux 下面最熟悉的应该就是 Kickstart 以及 cobbler.写这篇文章的目的在于我公司目前使用的就是 Kicksta ...

  3. span 超出内容自动换行

    <span style="width:80%;word-break:normal;display:block;word-warp:break-word;overflow:hidden; ...

  4. Mac下安装Docker

    1.去"https://docs.docker.com/docker-for-mac/"下载安装包  2.根据提示安装下载好的Docker.dmg 3.运行Docker 4.在终 ...

  5. web到service简单原理例子

    这是目前的理解 附上服务端源码 package com.lsw.server; import java.io.*; import java.net.*; import java.util.HashMa ...

  6. scp和rsync的区别和常用参数

    一.scp 命令 1.scp 是 secure copy 的缩写,用于远程的文件的复制. 2.参数: -r: 递归复制整个目录. 3.实例: scp /home/space/music/1.mp3 u ...

  7. Java 中的国际化

    国际化 ,英文叫 internationalization 单词太长 ,又被简称为 i18n(取头取尾中间有18个字母)不经大声呼喊 ,这都行 !接着看什么是国际化 , 国际化是指让产品或是程序在无需 ...

  8. JQuery基础-DAY1

    jQuery介绍 是一个轻量级的js框架/库,其宗旨是write less do more. jQuery对象 js的对象叫做dom对象 使用jQuery框架产生的对象是jQuery对象,是对dom对 ...

  9. Cpp下匿名对象探究

    先来看看一段代码: #include "iostream" using namespace std; class ABCD { public: ABCD(int a, int b, ...

  10. Django的orm中get和filter的不同

    Django的orm框架对于业务复杂度不是很高的应用来说还是不错的,写起来很方面,用起来也简单.对于新手来说查询操作中最长用的两个方法get和filter有时候一不注意就会犯下一些小错误.那么今天就来 ...