1、C#中的断点调试
(1)断点调试的作用:
通过断点调试,可以查看程序执行的具体过程。F11 查看下一步
如果有错误的时候,我们可以通过debug模式,断点调试,找变量变化,及错误原因。
(2)断点调试第一步:打断点
在我们CS结尾的编码文件中,最左侧行号前,可以双击鼠标打断点。
(3)断点调试第二步:运行debug模式
按F11 逐步查看程序运行结果,最后使用完断点调试,别忘记双击取消断点。
注意: 在运行程序的时候
不要用CTRL+ f5模式运行,此模式只执行程序,不调试程序。
2、同一个解决方案下面,创建多个项目
(1)添加项目
选中解决方案,右键——>添加——>项目——>visual C#项目——>控制台应用程序
(2)多个项目,如何指定某个项目运行。
选中想要执行的项目,右键——> 设置为启动项目
(3) 如何默认打开的项目变成启动项目,启动项,自动切换。
选择解决方案——>右键,选择属性——> 启动项——>当前打开的项目启动。
3、运行当前选定项目
选择解决方案——>右键,选择属性——> 启动项——>当前打开的项目启动。
4、C#中的 字符串拼接,及占位符
(1) + 加号,在与字符串相加的过程中,是字符串拼接的作用。
(2)C# 也可以用占位符的方式来进行,字符串的拼接。
在字符串中用大括号,来做占位{}
大括号中,需要填写后面对应要拼接变量的 索引占位。从0开始递增。
例如:
string name = "张三";
int age = 13;
char sex = '男';
//用+号来进行的字符串的拼接。
Console.WriteLine("我的名字是:"+name+",我的年龄是"+age+",我的性别是:"+sex);
//用占位符的方式,进行字符串的拼接。
Console.WriteLine("我的名字是:{0},我的年龄是:{1},我的性别是:{2}",name,age,sex);
(3)占位符高级用法--限定数据有效位数
//占位符的,格式约束。
double d = 10*1.0 / 3;
Console.WriteLine("d的值是:{0:0.00}",d);
占位符,要求格式0索引位置的占位变量,需要遵循0.00的格式:
{0:0.00}
5、C#中的转义字符
\n 换行
\t 缩进一个tab键位
\" 转义双引号显示
\\ 转义\显示 (一般用于地址路径)
\' 转义单引号
\b 转义一个退格键
/前提是,你使用这个\b退格的转义效果。
//不能在字符串,最前面,和最后面使用。
\r\n 换行的效果 winform应用程序,显示效果时候用。
@符号的两个作用
(1)在C#中,可以取消转义效果。
用@ 符号产生效果
例如:
string path = @"D:\work_code_space\visual_studio2013_install_Space";
Console.WriteLine(path);
(2)在C#中,@符号,可以让我们的内容,按照原格式输出。
@符号,可以控制输出语句中的内容,原格式输出
例如:
Console.WriteLine(@"今天天气好晴朗,
处处好风光!");
6、C#中的运算符问题
1、算数运算符
+ - * / % ++ --
2、比较运算符(关系运算符)
> < >= <= == !=
3、赋值运算符
=
+=
-=
*=
/=
%=
4、逻辑运算符
& 两遍都满足才是true
| 其中一个满足,就是true
! true变为false false 变成true,结果取反
^ 相同为false ,不同为true
&& 两遍都满足才是true,如果判断第一个为false,就不继续判断了
|| 其中一个满足,就是true,第一个为true了,就不继续判断了。
7、C#中如何封装类,和创建对象
创建一个Student类。
选择项目——>右键——>添加——>类
定义好学生类,
可以在里面写属性和方法。
public string name;
public int age;
使用学生类。
Student s = new Student();
s.name = "张三"; //分别给student对象,的姓名和年龄赋值。
s.age = 13;
//输出打印,学生的姓名,和年龄。
Console.WriteLine("学生的名字是:{0},学生的年龄是:{1}",s.name,s.age);
Console.ReadKey();
8、C#中的流程控制语句
代码执行顺序:
1、文档流顺序,从上到下,从左到右
2、选择流程语句,根据判断,来执行对应代码块。
(1)if语句
的三种结构:
结构一: if(判断条件){ 满足判断条件要执行的代码}
结构二: if(判断条件){满足判断条件要执行的代码} else{不满足判断条件要执行的代码}
第二种if语句格式,可以和三元表达式互换:
三元表达式:判断表达式? 结果1: 结果2;
结构三: if(判断条件1){满足判断条件1要执行的代码}else if(判断条件2){满足判断条件2要执行的代码} else{以上条件都不满足的时候,执行的代码}
(2) switch
基本结构:
switch(匹配的变量或者表达式)
{
case 具体的值1:
满足匹配条件1,要执行的代码;
break;
case 具体的值2:
满足匹配条件2,要执行的代码;
break;
default :
break;
}
注意: 在C#中,switch语句,里面的所有break不能省略!
所有switch 中 case 匹配的值,不能重复。
3、循环流程语句,按照循环条件,循环执行代码。
(1)for循环
for循环的 基本结构:
for(初始化条件;判断条件;控制条件)
{
循环执行的代码;
}
(2)while 循环
while循环的基本结构:
初始化条件;
while(判断初始化条件){
要循环执行的代码;
控制条件;
}
(3)do while 循环。
do while 循环基本结构:
初始化条件;
do
{
要循环执行的代码;
控制条件;
}while(判断条件);
练习: 分别用for 循环,while 循环,和do while 循环,来求1--100的和;
9、C#中的数组 数组的声明
初始化数组:
静态初始化:数组类型[] 数组名 = {元素1,元素2,元素3……};
动态初始化:数组类型[] 数组名 = new 数组类型][数组大小];
C#中可以动静结合方式初始化数组; 但是开辟空间不可冲突!
数组类型[] 数组名 = new 数组类型[]{元素1,元素2……};
数组类型[] 数组名 = new 数组类型[3]{元素1,元素2,元素3};
、、
高级for循环,专门用来操作遍历数组和集合的。
高级for循环的语法结构:
foreach (元素类型 元素的名字 in 要遍历的数组名 )
{
可以通过元素名字的引用,操作每个元素了。
}
10、引用数据类型的 对象数组
Student类的封装
属性和方法
name
age
如果没有自定义构造方法,系统会默认给无参构造
属性的get 和set 方法
study()
toString()方法
然后创建student多个对象,存到 对象数组中,遍历数组查了看元素。
11、数组的高级排序算法,冒泡排序。
int[] arr = {2,4,63,12,77,99};
通过冒泡排序实现。
练习:
//定义一个数组
int[] arr = { 22,333,11,55,23};
//外层循环控制比较几轮。
for (int i = 0; i < arr.Length-1; i++)
{ //内层循环,决定要比较次数,比较次数不断减少。
//因为每一轮都排出一个最大的在最后了, 没必要再次比较。
for (int j = 0; j < arr.Length-1-i; j++)
{
//让两个相邻 元素进行比较。升序,大的往后放
if (arr[j] > arr[j + 1]) {
int temp = arr[j]; //定义零时变量 把arr[j]赋值
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
}
//通过高级for循环,foreach 来遍历数组,查看排序结果。
foreach (int a in arr)
{
Console.Write(a+" ");
}
Console.ReadKey();
数组工具类,实现排序:
Array.Sort(arr);
12、异常的捕获
用异常捕获机制,来处理可能会出现错误的代码
基本结构:
try
{
可能会出现问题的代码;
}
catch
{
如果try 里面的代码出现了问题,我们在catch中做那些处理;
}
13、其他数据类型的转换问题,隐式,显示,字符串和其他类型转换。
相同数据类型的数据才能转换。
int ——> double 隐式转化
double ——> int 显示转换 强制转换。
字符串类型,和其他类型的转换。
int a = int.parse("123");
Convert这个类,就是转化工具类。
Convert.ToInt32("222");
Convert.ToDouble("2.344");