数据结构与算法:02 C#语言基本语法结构
02 C#语言基本语法结构
知识结构:
1、数据类型
第一种分类:
- 简单数据类型:
byte
、short
、int
、long
、float
、double
、char
、bool
- 组合数据类型:
struct
、enum
、class
、interface
类型 | 描述 |
---|---|
byte | 无符号8位整型 |
(ushort) short | (无)有符号16位整型 |
(uint) int | (无)有符号32位整型 |
(ulong) long | (无)有符号64位整型 |
float | 32位浮点型 |
double | 64位浮点型 |
char | 16位unicode字符(国际标准字符集) |
bool | 布尔型 |
第二种分类:
- 值类型:作为参数传递时,传递拷贝。
- 包括:简单数据类型、struct类型、enum类型
- 引用类型:作为参数传递时,传递地址。
- 包括:class类型、数组
例1:
public struct Book
{public double Price;public string Title;public string Author;
}class Program
{static void ChangeBook(Book bk){bk.Price = 1.01;bk.Title = "Spss";bk.Author = "John";}static void PrintBook(Book bk){Console.WriteLine("Book Infor:\n Price={0},Tile={1},Author={2}",bk.Price, bk.Title, bk.Author);}static void Main(string[] args){Book bk;// = new Book();bk.Price = 10.01;bk.Title = "MatLab";bk.Author = "Tom";PrintBook(bk);ChangeBook(bk);PrintBook(bk);//Book Infor://Price=10.01,Tile=MatLab,Author=Tom//Book Infor://Price=10.01,Tile=MatLab,Author=Tom}
}
该例子说明“值类型”传递拷贝,不改变本身所存储的值。
例2:
public class Book
{public double Price;public string Title;public string Author;
}class Program
{static void ChangeBook(Book bk){bk.Price = 1.01;bk.Title = "Spss";bk.Author = "John";}static void PrintBook(Book bk){Console.WriteLine("Book Infor:\n Price={0}, Tile={1}, Author={2}",bk.Price, bk.Title, bk.Author);}static void Main(string[] args){Book bk = new Book(); //错误 Book bk;bk.Price = 10.01;bk.Title = "MatLab";bk.Author = "Tom";PrintBook(bk);// Book Infor:// Price = 10.01, Tile = MatLab, Author = TomChangeBook(bk);PrintBook(bk);// Book Infor:// Price = 1.01, Tile = Spss, Author = John}
}
例3:
class Program
{static void ChangeArrayItem(int[] array){for (int i = array.Length - 1; i >= 0; i--){array[i] = array.Length - 1 - i;}}static void PrintArrayItem(int[] arry){for (int i = 0; i < arry.Length; i++){Console.Write("{0} ", arry[i]);}Console.WriteLine();}static void Main(string[] args){int[] arr = new int[3];for (int i = 0; i < arr.Length; i++){arr[i] = i;}PrintArrayItem(arr); // 0 1 2ChangeArrayItem(arr);PrintArrayItem(arr); // 2 1 0}
}
例2,例3说明“引用类型”传递地址,要改变本身所存储的值。具体应用时,要注意“值类型”和“引用类型”的区别。
2、变量与常量
- 变量定义:
变量类型 变量名;
- 常量定义:
readonly
在声明或构造函数中初始化const
在声明时初始化
例4:
public class SimpleClass
{public int X;public readonly int Y = 2;public readonly int Z;public const double Pi = 3.1415926;public const string Etc = "...";public SimpleClass(){Z = 3;}public SimpleClass(int p1, int p2, int p3){X = p1;Y = p2;Z = p3;}
}class Program
{static void Main(string[] args){SimpleClass sp1 = new SimpleClass();sp1.X = 1;Console.WriteLine("sp1:x={0}, y={1}, z={2}", sp1.X, sp1.Y, sp1.Z);// sp1: x = 1, y = 2, z = 3SimpleClass sp2 = new SimpleClass(-1, -2, -3);Console.WriteLine("sp2:x={0} ,y={1}, z={2}", sp2.X, sp2.Y, sp2.Z);// sp2: x = -1 ,y = -2, z = -3Console.WriteLine("PI={0}{1}", SimpleClass.Pi, SimpleClass.Etc);// PI = 3.1415926...}
}
以上例子注意readonly
与const
定义常量以及使用该常量时的区别。
3、运算符与表达式
运算符:
- 一元运算符
x++
,y++
- 二元运算符
x+y
,x-y
- 三元运算符
max = (x>y)?x:y;
运算符:
- 算术运算符
+、-、*、/、%
- 关系运算符
>、>=、==、!=、<=、<
- 逻辑运算符
!、&&、||
表达式:由运算符和变量或常量组成的式子。
4、基本语句
4.1 赋值语句
变量名 = 表达式;
4.2 条件语句
第一种:
if(条件表达式)
{语句序列;
}
第二种:
if(条件表达式)
{语句序列;
}
else
{语句序列;
}
第三种:
if(条件表达式1)
{语句序列1;
}
else if(条件表达式2)
{语句序列2;
}
else if(条件表达式N)
{语句序列N;
}
else
{语句序列N+1;
}
4.3 开关语句
swith(表达式)
{case 值1:语句序列1; break;case 值2:语句序列2; break;case 值N:语句序列N; break;default:语句序列N+1; break;
}
例5:
class Program
{static void Main(string[] args){Random rdm = new Random();int i = rdm.Next(1, 5);Console.WriteLine(i); // 1switch (i){case 1:Console.WriteLine("Case 1.");break;case 2:Console.WriteLine("Case 2.");break;case 3:Console.WriteLine("Case 3.");break;default:Console.WriteLine("Default Case.");break;}// Case 1.i = rdm.Next(1, 5);// 1Console.WriteLine(i);switch (i){case 1:case 2:case 3:Console.WriteLine("It's 1,2 or 3.");break;default:Console.WriteLine("Not Sure What it is.");break;}//It's 1,2 or 3.}
}
以上例子注意switch
语句的语法结构,特别是每个case
语句都需要匹配break
语句。
4.4 循环语句
第一种:
for(初始化循环计数器表达式;判断循环终止条件;递增或递减循环计数器表达式)
{语句序列;
}
第二种:
while(条件表达式)
{语句序列;
}
第三种:
do
{语句序列
}while(条件表达式);
第四种:
foreach(元素类型 元素 in 集合)
{语句序列;//通常用于遍历集合中的每个元素
}
例6:
class Program
{static void Main(string[] args){int i;int sum = 0;for (i = 1; i <= 10; i++){sum += i;}Console.WriteLine(sum);// 55sum = 0;i = 1;while (i <= 10){sum += i;i++;}Console.WriteLine(sum);// 55sum = 0;i = 1;do{sum += i;i++;} while (i <= 10);Console.WriteLine(sum);// 55}
}
例7:
class Program
{static void Main(string[] args){int[] arry = new int[] { 1, 3, 5, 7 };foreach (int i in arry){Console.WriteLine(i);}// 1// 3// 5// 7}
}
4.5 try…catch…finally 语句
try
{语句序列;
}
catch(Exception ex)
{语句序列;
}
finally
{语句序列;
}
例8:在屏幕上输入一个整数,则屏幕上显示该整数颗“*”号。
class Program
{static void Main(string[] args){Console.WriteLine("请输入一个整数:");// 请输入一个整数:// abcstring sTemp = Console.ReadLine();try{int iCount = int.Parse(sTemp);for (int i = 0; i < iCount; i++){Console.Write("*");}Console.WriteLine();}catch (Exception ex){Console.WriteLine("错误原因为:" + ex.Message);// 错误原因为:输入字符串的格式不正确。}finally{Console.WriteLine("结束.");// 结束.}}
}
以上例子注意try…catch…finally
语句的语法结构,该语句通常用来捕获并处理异常。
4.6 break、continue 语句
break
语句:跳出最里面的封闭循环或switch
语句中continue
语句:将控制权传递给所在封闭循环的下一次迭代
例9:
class Program
{static void Main(string[] args){for (int i = 1; i <= 100; i++){if (i == 5)break;Console.WriteLine(i);}// 1// 2// 3// 4for (int i = 1; i <= 100; i++){if (i < 99)continue;Console.WriteLine(i);}// 99// 100}
}
4.7 注释语句
- 单行注释:
//文字序列
- 多行注释:
/*文字序列*/
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
相关文章:

积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引
[源码下载]积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引作者:webabcdFlash 之 ActionScript 3.0 1、积少成多Flash(1) - ActionScript 3.0 基础之数据类型、操作符和流程控制语句介绍Flash ActionScript 3.0 中所有的数据类型都是对象,…
WPF Snoop 2.7 源码研究
转载于:https://www.cnblogs.com/puncha/archive/2012/04/01/3877001.html

java培训基础知识都学哪些
很多人都开始学习java技术,觉得java语言在未来的发展前景空间非常大,事实却是如此,那么针对于零基础的同学, 学习java技术需要学哪些呢?下面我们就来看看java培训基础知识都学哪些? java培训基础知识都学哪些? 1.JavaWeb Linux…

数据结构与算法:03 C#面向对象设计 I
03 C#面向对象设计 I 知识结构: 1、类与对象 类:用高级程序语言实现的一个ADT描述。对象:通过类声明的变量。 2、封装 2.1 什么是封装 把类的内部隐藏起来以防止外部看到内部的实现过程。 2.2 怎样封装 通过限制修饰符private、protect…

Centos7安装编译安装zabbix2.219及mariadb-5.5.46
mariadb-5.5.46的安装: 首先下载mariadb-5.5.46-linux-x86_64.tar.gz,然后使用tar -xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local目录下 添加数据库组 # groupadd mysql 添加数据库用户 # useradd -g mysql mysql cd /usr/local ln -sv…

软件测试开发:常见测试类型概念
软件测试是软件开发中非常重要的一个环节,软件测试工程师需要对每个环节进行严格把控,才能保证系统在每个阶段得以控制。下面小编就为大家详细介绍一下软件测试开发:常见测试类型概念的相关内容。 软件测试开发:常见测试类型概念: (1)边界测试…

技术图文:C#语言中的泛型 I
C#语言中的泛型 I 知识结构: 1. 泛型概述 泛型广泛应用于容器(Collections)和对容器操作的方法中。 从 .NET Framework2.0 开始,微软提供了一个新的命名空间System.Collections.Generic,其中包含了一些新的基于泛型…

ubuntu搭建svn、git遇到的问题及解决办法
不错的git笔记博客: http://www.cnblogs.com/wanqieddy/category/406859.html http://blog.csdn.net/zxncvb/article/details/22153019 Git学习教程(六)Git日志 http://fsjoy.blog.51cto.com/318484/245261/ 图解git http://my.oschina.net/x…

webstorm同时打开多个project方法
曾经多次碰到过想要打开多个project的时候,可每次打开其他项目时,必须选择新窗口还是替换次窗口,如果新窗口的话就无法跟现在的项目在同一个webstorm中同时进行编辑,需要来回切换窗口,很是不方便,今天无意中…

什么业务场景适合使用Redis?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年…

Linux基础知识汇总(2)...持续更新中
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566软件安装: {软件安装的几种形式 rpm 由厂商提供二进制包 yum rpm源的前端管理器 src 源码包configure安装 bin 包含rpm和shell将安装一步执…

技术图文:C#语言中的泛型 II
C#语言中的泛型 II 知识结构: 6. 泛型接口 泛型类与泛型接口结合使用是很好的编程习惯,比如用IComparable<T>而非IComparable,以避免值类型上的装箱和拆箱操作。若将接口指定为类型参数的约束(接口约束)&#…

linux档案权限
Linux 下的档案当你对一个档案具有w权限时,你可以具有写入/编辑/新增/修改档案的内容的权限, 但并丌具备有删除该档案本身的权限!对二档案的rwx来说, 主要都是针对『档案的内容』而觊,不档案档名的存在不否没有关系喔&…

新手UI设计师需要掌握的知识和技能
UI设计岗位在近几年的需求是越来越高的,很多零基础学员都开始学习UI设计技术,那么想要成为一名合格的UI设计师,新手UI设计师需要掌握的知识和技能是比较要会的,来看看下面的详细介绍。 新手UI设计师需要掌握的知识和技能ÿ…

数据结构与算法:04 C#面向对象设计 II
04 C#面向对象设计 II 知识结构: 5、属性 例1:属性概念的引入(问题) public class Animal {public int Age;public double Weight;public bool Sex;public Animal(int age, double weight, bool sex){Age age;Weight weight;S…

SharePoint迁移和升级方案
这是之前针对SharePoint迁移和升级写的方案,去掉了敏感的部分,共大家交流吧。SharePointMigrationSolution转载于:https://www.cnblogs.com/zhaojunqi/archive/2012/04/12/2444803.html

零基础如何掌握web前端开发技能
很多零基础学员想要进入到互联网行业都会选择web前端做首选技术语言来学习,但是学习web前端不是那么容易的,想要成为一名合格的web前端工程师,所要掌握的技能一定要会,下面小编就为大家详细的介绍一下零基础如何掌握web前端开发技…
数据结构与算法:05 Leetcode同步练习(一)
Leetcode同步练习(一) 题目01:两数之和 题号:1难度:简单https://leetcode-cn.com/problems/two-sum/ 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,…

用Asp.net实现简单的文字水印
经常看见MOP上有人贴那种动态的图片,就是把一个字符串作为参数传给一个动态网页,就会生成一个带有这个字符串的图片,这个叫做文字水印。像什么原来的熊猫系列,还有后来的大树和金条,都挺有意思。这东西看着挺好玩的&am…

yum国内镜像
Centos-7修改yum源为国内的yum源 国外地址yum源下载慢,下到一半就断了,就这个原因就修改它为国内yum源地址 国内也就是ali 与 网易 以centos7为例 ,以 修改为阿里的yum源 先确定有wget 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_…

HTML的标签分为哪几类?各标签语法格式是怎样的?
HTML的标签分为哪几类?各标签语法格式是怎样的?相信大家在学习HTML课程的时候,有讲到这方面的知识,根据标签的组成特点,通常将HTML标签分为两大类,分别是“双标签”、“单标签”,对它们的具体介绍如下。 1.双标签 双…

数据结构与算法:06 线性表
06 线性表 知识结构: 1. 线性表的定义与操作 1.1 线性表的定义 线性表(Linear List)是由n(n≥0)n (n≥0)n(n≥0)个相同类型的数据元素a0,a1,⋯,an−1a_0,a_1,⋯,a_{n-1}a0,a1,⋯,an−1组成的序列。即表中除首尾元素外,其…

MySQL提权简单方法
前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是在o-otik上,但是公布的是针对 Unix系统的Exploit,并且成功率也不是很高.而近期,国内有高手放出针对Win系统的相关文章,于是我马上找来与朋友一同…

转载LINQ优点 自己学习用的
这几天在读一本LINQ方面的书《Essential LINQ》,在这里和大家分享下。 由于对LINQ的深入总结需要大量的篇幅,因此在这里分成几个部分来讲。 (*我看《Essential LINQ》是英文版的,有些名词不能翻译成正统的中文解释请给予谅解) LIN…

什么是Python?好学吗?
互联网IT行业是很多人都比较关注的行业,大部分都想学习IT技术进入到这个行业,Python编程语言在近几年是多数人的选择,那么什么是Python?好学吗?具体来看看下面的详细介绍吧。 一、什么是python 网络上对python的解释是一门解释型、面向对象…

数据结构与算法:07 Leetcode同步练习(二)
目录 题目01:回文数题目02:x 的平方根题目03:爬楼梯题目04:买卖股票的最佳时机题目05:买卖股票的最佳时机 II题目06:跳跃游戏题目07:三数之和题目08:最接近的三数之和题目09&#x…

(五)Docker镜像和容器
之所以在之前没有讲什么是镜像和容器是因为如果你没有一个最初的认识,那么你就很难理解镜像和容器以及它们的区别。我相信在前面一章中的讲述中,你应该稍有体会容器是基于镜像构建的,同时构建了容器之后如果不删除就会一直存在,而…

翻译-高质量JavaScript代码书写基本要点(转载)
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p1173 原文作者:Stoyan Stefanov原文链接:The Essentials of Writing High Quality JavaScript 翻译编辑:张鑫旭//zxx: 俗不可耐的…

学习ui设计的流程是什么
UI设计在如今的市场行情中是很多企业都必不可少的一个技术岗位,UI设计是比较注重自身产品的用户体验的,想要学习UI设计,一定要做足功课,下面小编就为大家详细的介绍一下学习ui设计的流程是什么? 学习ui设计的流程是什么?总体进程…
数据结构与算法:08 Leetcode同步练习(三)
目录 题目01:合并两个有序链表题目02:删除排序链表中的重复元素题目03:环形链表题目04:反转链表题目05:删除链表中的节点题目06:两数相加题目07:删除链表的倒数第N个节点题目08:两两…