具体看一下各个部分:
以下几点值得注意:
C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。
关键字,是对编译器有特殊意义的预定义保留标识符,他们不能在程序中作标识符。
在任何C#程序中的第一条语句都是:
using System;
using关键字用于在程序中包含命名空间。一个程序可以包含多个using语句。
class关键字用于声明一个类。
/*这个程序演示
C#语言的多行
注释语法*/
单行注释是用'//'符号表示。例如:
//这是C#语言单行注释方法
文档注释用'///'符号表示(用在方法和类上)。例如:
///
///这是主程序入口
///
///需要传入的参数
public static void Main(string[] args)
{
}
注释的作用:
铭记:
变量是一个供程序存储数据的盒子。在C#中,每个变量都有一个特定的类型,不同类型的变量其内存大小也不尽相同。
C#中提供的基本类型大致可以分为以下几类:
类型 | 举例 |
---|---|
整数类型 | byte、short、int、long(L) |
浮点型 | float(f)、double(d) |
十进制类型 | decimal(m) |
布尔类型 | bool |
字符类型 | string、char |
空类型 | null |
浮点型之间的转换只有float转换成double,decimal范围比float小,但精度比float高。
数字和布尔类型不可以直接赋为null类型。
类别 | 表达式 | 说明 |
---|---|---|
基本 | x.m | 成员访问 |
x(...) | 方法和委托调用 | |
x[...] | 数组和索引器访问 | |
new T(...) | 对象和委托创建 | |
new T(...){...} | 使用初始值设定项创建对象 | |
new{...} | 匿名对象初始值设定项 | |
new T[...] | 数组创建 | |
一元 | +x | 恒等 |
-x | 求相反数 | |
!x | 逻辑求反 | |
~x | 按位求反 | |
++x | 前增量 | |
--x | 前减量 | |
x++ | 后增量 | |
x-- | 后减量 | |
(T)x | 将x显示转换为类型T | |
二元 | x*y | 乘法 |
x/y | 除法 | |
x%y | 求余 | |
x+y | 加法、字符串串联 | |
x-y | 减法 | |
x<位左移 |
| |
x>>y | 位右移 | |
x小于 |
| |
x>y | 大于 | |
x<=y | 小于等于 | |
x>=y | 大于等于 | |
x is T | 如果x为T,则返回true,否则返回false | |
x as T | 返回转换为类型T的x,如果x不是T则返回null | |
x==y | 等于 | |
x!=y | 不等于 | |
x&y | 整型按位AND,布尔逻辑AND | |
x|y | 按位或 | |
x&&y | x和y都为true时,才为true(仅当x为true,才对y求值) | |
x||y | x或y为true时,就为true(仅当x为false,才对y求值) | |
x??y | 如果x为null,则计算结果为y,否则计算结果为x | |
三元 | x?y:z | 如果x为true,则对y求值;如果x为false,则对z求值 |
赋值或匿名函数 | x=y | 赋值 |
x=x+y | 复合赋值 | |
(T x)=>y | 匿名函数(lambda表达式) |
if语句
if(i>1){}
if-else
if(i>1)
{}
else
{}
if(i>=10)
{}
else if(i>0&&i<10)
{}
else
{}
switch语句
switch(i)
{
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
default:
...
break;
}
for循环
for(int i=0;i<10;i++)
{}
while循环
while(i<10)
{}
do-while循环
do
{}while(i<10);
//声明没有元素的数组
int[] a = new int[6];
//声明初始化有元素的数组
int[] b = new int[] { 1, 2, 3, 4, 5, 6 };
//在声明初始化有元素的数组时,也可以指定数组大小
string[] c = new string[5] { "H","e","l","l","o" };
//简便写法
string[] c = { "H","e","l","l","o" };
//声明初始化有元素的数组
int[] arr = new int[6];
//获取数组中第一个元素
int i1 = arr[0];
//给数组内的元素赋值
arr[0] = 1;
扩展:
String st="5.21";
double n=5.21;
Int.Parse(st);
Int.Parse(n); //报错
Convert.ToInt32(double value),不完全遵循四舍五入,如果value为两个整数中间的数字,则返回二者中的偶数,对比下面的例子:
Convert.ToInt32(4.3); //四舍五入为4
Convert.ToInt32(4.5); //四舍五入为4
Convert.ToInt32(4.53); //四舍五入为5
Convert.ToInt32(5.4); //四舍五入为5
Convert.ToInt32(5.5); //四舍五入为6
Convert.ToInt32(5.53); //四舍五入为6
注意:Convert.ToInt32()和Int.Parse()对于空值(null)的处理不同,Convert.ToInt32(null)会返回0而不会产生任何异常,但Int.Parse(null)则会产生异常。
string a = "zhangsan";
string b = "lisi";
string c = "wangwu";
string[] sum = new string[3] { a, b, c };
int n = sum.Length; //arr.Length表示出数组元素个数
for (int i = 0; i < n; i++)
{
if (sum[i] == "wangwu")
{
MessageBox.Show("找到了" + sum[i]);
break;
}
}
方法命名使用Pascal 规则: 每个单词开头的字母大写(如 TestCounter)。
变量命名使用Camel 规则: 除了第一个单词外的其他单词的开头字母大写(如 testCounter)。
方法返回值可以认为是外部调用某种行为后得到的一种反馈。
///
/// 加法方法
///
/// 数字1
/// 数字2
/// 返回的和
public int Add(int x, int y) //public表示方法的调用权限是公开的,int表示方法的返回值是int类型
{
return x + y;
}
out和ref的区别:
1)面向过程——怎么做?
特点
2)面向对象——谁来做?
相比较函数,面向对象是更大的封装,根据职责,在一个对象中封装多个方法
特点
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
类就相当于制汽车的图纸,是一个模板,是负责创建对象的
在使用面向对象开发前,应该首先分析需求,确定一下程序中需要包含哪些类
在程序开发中要设计一个类,通常需要满足以下3个要素:
名词提炼法:分析整个业务流程出现的名词,通常就是找到的类。
同函数声明
访问级别约束:
注意:类的访问级别默认internal,要加上public才能让外部访问。
静态方法、属性
静态类