C#程序:是C#语言编写程序的工具
.net:C#运行的环境
namespace:命名空间,是C#中组织代码的方式
作用:类似于Java中的package(包)。
using:用来引用命名空间。
类似于Java中的import关键字
class用来定义类,C#中不要求类名必须与源文件的名称一样。
1.Main方法的四种语法:
static void Main(string [] srgs)
static void Mian()
static int Main(string [] srgs)
static int Mian()
数据类型 | 含义 |
---|---|
int | 整型 |
float | 单精度浮点 |
double | 双精度浮点 |
string | 字符串 |
bool | 布尔 |
类 | |
array | 数组 |
语法:
数据类型 变量名 = 值;
例:
int a = 12;
//声明了一个为a的整型变量,并给它赋初始值为12;
1、只能是字母、数字和下划线组成。
2、不能以数字开头。
3、不能使用C#语言的关键字。
4、使用驼峰命名法。
1、 语法:
const 数据类型常量名称 = 值;
2、常量的命名规范
(1)常量名称必须具有一定的实际意义 。
(2)常量名称最好以大写字母来命名,中间可根据意义的连接性用下划线做连接,每个常量定义的右侧最好有简单的注释,说明起作用。
(3)常量名称长度最好不要超过25个字符,否则可读性差。
(1)Console.WriteLine();
(2)Console.WriteLine(“要输出的值”);
(3)Console.WriteLine(“格式字符串”,变量列表);
语法:Console.ReadLine();
语法:
[访问修饰符] 返回值类型 方法名(参数列表)
{
//方法的主体
}
1.访问修饰符的分类
pubic:公共的
private:私有的
projected:受保护的
internal:默认的
2.方法的返回值类型
可以是int、float、double、bool、string等。如果方法不返回值,需要使用void关键字。
3.方法名
每个定义的方法都要有一个名称。
4. 参数列表
调用有参方法是,可以向方法中传递参数。
5.方法的主体
方法实现某一特定功能的代码。
1、定义类的语法:
[访问修饰符] class 类名
{
//类的主体
}
1.分类
C#中的注释分为:单行注释、多行注释和折叠注释。
//:单行注释
多行注释:文档注释:/// 和 块注释:/**/
折叠注释:#region
#endregion
1.调试所用的快捷键
F5:开始调试
Shift+F5:停止调试
F9:设置或取消断点
Ctrl+F9:取消断点
F10:单步执行
F2:转到所调用过程或变量的定义。
Ctril+F2:将焦点转移到类的下拉列表。
(1)、顺序结构
(2)、选择结构
(3)、循环结构
执行按照从上到下的顺序执行。
(1)、if选择结构
(2)、switch结构
if后面括号中的条件会产生一个bool值,为true或false。
(1)、简单if语法结构:
当if里面条件成立时,就执行里面的代码块。否则就执行if大括号后面的。
if(条件){
//代码块
}
(2)、if-else语法结构:
if(条件){
//代码块1
}else{
//代码块2
}
如果if括号里的条件成立,就执行代码块1,如果不成立就执行代码块2。
(3)、多重if选择结构:
if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else{
//代码块3
}
先判断条件1,为true就执行代码块1,不成立就判断条件2,为ture就执行代码块2,如果都不成立,就执行代3。
(4)、嵌套if选择结构:
if(条件1){
if(条件2){
//代码块1
}else{
//代码块2
}
}else{
//代码块3
}
里面的if条件判断是基于外面的if条件上的,如果外面的条件为false,里面的就不会判断。else永远是与离自己最近的并没有被配对的if进行配对。
逻辑运算符:当同时有多个条件的时候就需要用逻辑运算符。
运算符 | 含义 | 作用 |
---|---|---|
&& | 逻辑与 | 多个条件同时满足 |
|| | 逻辑或 | 多个条件只需要满足一个 |
! | 逻辑非 | 取所得值的相反值 |
三目运算符语法结构:
数据类型 变量名 = 条件?true:false
与if-else选择结构一样。
1.switch 语法结构如下:
switch(表达式){
case 常量1:
//代码块1;
break;
case 常量2:
//代码块2;
break;
......
default:
//代码块n;
break;
}
4.default:当所有case都不满足的时候,就会进入default,default表示默认,可以省略。
5.break:表示停止,用来跳出当前结构,不可以省略。
语法:
数据类型 [ ] 数组名;
语法:
类名 [ ] 数组名 = new 类名[长度];
语法:
while(条件){
//代码块
}
例如:
class Do{
static void main(String[] args){
int i = 0;
while(i<=100){
Sysotem.out.println("好好学习!");
i= i+1;
}
}
}
//好好学习会执行100次
1.执行顺序如下:
(1)声明并初始化循环变量。
(2)判断循环条件是否满足,如果满足则执行循环操作;否则退出循环。
(3)执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环。
2.while循环的特点:
先判断条件,后执行代码块。所以可能会一次也不执行。
语法:
do{
//代码块
}while(条件);
例如:
class Do{
static void main(String[] args)
int i=1;
do{
System.out.println("好好学习!");
i++;
}while(i<=100);
}
}
1.执行顺序:
(1) 声明并初始化循环变量
(2)执行一遍循环操作
(3)判断循环条件,如果循环条件满足,则循环继续执行,否则退出循环。
2.特点:
先执行,再判断,在do-while中,循环体至少执行一遍。
语法:
for(初始化部分;条件部分;迭代部分){
//代码块
}
例如:
class Do{
public static void main(String[] args){
for(int i = 0;i<100;i++){
System.out.println("好好学习,天天向上!");
}
2.执行顺序:
(1)执行初始部分(如:int i = 0)。
(2)进行循环条件判断 (如:i<100)。
(3)根据循环条件判断结果。为true,则执行循环体;为false,则退出循环体。
(4)执行迭代部分,改变循环变量值(i++)。
语法:
foreach(数据类型 变量名 in 数组名)
{
//代码块
}
语法:
for(初始化;循环条件;迭代部分)
{
for(初始化;循环条件;迭代部分)
{
//代码块
}
}
例如:
static void Main(string[] args)
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadLine();
}
当循环的条件不成立的时候,就会结束循环。
(1)break:用来结束整个循环
当循环执行到某一次循环是,不想再让它继续执行下去的时候,可以使用break。
或者当循环条件永远为true的时候,就必须用break来结束循环,不然就会变成死循环。
(2)continue:只能用来结束本次循环
当你有一次循环不需要执行的时候,就可以使用continue跳过。
continue后面的语句不会执行,回到循环的下一次开始。
3.break和continue的用法
break:可以在循环中使用,也可以在选择结构中使用。
continue:只能用于循环结构。
1、算法:
两两相邻进行比较,可以先求出最大值或最小值。
例如:
static void Main(string[] args)
{
int [] scores = new int[5];
int i,j;
int temp;
Console.WriteLine("请输入5个学员的成绩:");
for(i = 0;iscores[j]+1)
{
temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
}
}
}
}
含义:this是指当前对象本身,可以引用当前类的属性和方法
将控制台输入的东西作为这个方法的参数传递到方法中,在方法中使用if结构进行判断。
1.C#的属性
语法:
private string _name;
public string Name;
{
get{return _name;}
set{_name = value;}
}
get:访问器用来返回相应的私有字段的值。
set:访问器用来设定相应的私有字段的值。
2.属性的数据类型
必须与它所访问的字段类型一致。
3.属性的访问类型
只读属性:只包含get访问器
只写属性:只包含set访问器
读写属性:包含get和set访问器
4.对象初始化器
语法:
Student stu = new Student(){Name = " ",Age = " "};
1、封装是面向对象的三大特性之一,它用于隐藏内部实现,对外只暴露对类的基本操作,而不会让其他对象影响类的内部实现。
2、特点:
1、避免使用非法数据赋值
2、保证数据的完整性
3、避免类内部发生修改时,导致整个程序的修改。
1.值传递
当传递的是基本数据类型:形参的改变不会影响实参。
当传递的是引用数据类型:改变的是具体的值的时候形参会影响实参的值。
2.地址传递(引用传递)
使用ref关键字进行传递,实参和形参都需要加ref关键字。
方法 | 含义 |
---|---|
bool Equals(string value) | 比较字符串之间是否相等 |
int Compare(string strA, string strB) | 比较字符串的大小 |
int IndexOf(string value) | 查找字符,从前开始找 |
int LastIndexOf(string value) | 查找字符,从前开始找 |
string Join(string separator,string[ ] value) | 将数组中的每个字符串用分隔符连接 |
string[ ] Split(char separator) | 分割字符串 |
string Substring(int startIndex,int length) | 截取字符串 |
string ToLower() | 转换为小写 |
string ToUpper() | 转换为大写 |
string Trim() | 去掉前后两端的空格 |
Replace(string,string) | 讲究字符串替换为新字符串 |
String myString = String.Format(“格式字符串”,参数列表);
{索引[,对齐] [ :格式字符串]}
字符 | 说明 |
---|---|
C | 货币格式 |
D | 十进制格式 |
F | 小数点后的位数固定 |
N | 用逗号(,)个开的数字 |
P | 百分比计数法 |
X | 十六进制格式 |
1、简单的类型转换
(1)、隐式类型转换
将同一类型的小的数据类型转换为大的数据类型。
例如:double = float;
(2)、显式类型转换
将 ;两种数据类型进行强转。
Convert.To数据类型
(3)、字符串转换为数值型
只能将数字型的字符串转换为数据型
语法:
int.Parse(Console.ReadLine());
2.使用Convert类进行转换
方法 | 说明 |
---|---|
Convert.ToInt32() | 转换为整型 |
Convert.ToSingle() | 转换为单精度浮点型 |
Convert.ToDouble() | 转换为双精度浮点型 |
Convert.ToString() | 转换为字符串类型 |