c#的基本格式和c差不多,依旧是分号隔开,tab缩进,//注释(也可以注销代码)
程序调试:
1)f11,逐语句调试
2)f10,逐个过程调试
3)断点调试
注释:
1)//单行注释
2)/文本/多行注释
3)///文档注释
快捷键:
f12 原函数
ctrl+k+d 对齐
ctrl+s 保存
ctrl+z 撤销
ctrl+k+u 取消注释
ctrl+k+c 注释
#region+注释+代码+#endregion 折叠代码
运算符计算:
±*/%
数据类型:
bool bool 值只有真或假。
整数 int eg:int a;a=100;or int a=100; //和c一样,但是无法转化。
小数 double 用法与int一致
float //要在赋值后加f。
字符串 string zhangs=“zhahhzah”;//可以存空
字符节 char zadas=‘k’;//不能存空
金钱 decimal m=234m;//金钱,精度高,多用于金钱,后跟m代表钱,不带, 自定义为double
小数保留:
用占位符处理,eg:double a=10*0.1/3;
console.writeline("{0:0.00}",a);//产生的数字就变成两位小数了
数据转化:
隐式类型转化:不需要特殊声明,直接书写即可 double=int;
强制类型转化(显式类型转化):
语法:
(要转化类型)代转化值
eg:
double b=21.5;
int c=(int)b;//(c就等于21了)
convert强制类型转化//convert的中文翻译也是转化
使用时注意面子上要过得去,起码能转化。
转化成int时,16,32,64,是位数。
eg:
string a=“123”;
double b=convert.todouble(a);
语法:
1.console.writeline(“hello world”);
等价于printf,和python的print不一样,依旧不能使用‘ ’。
2.console.readkey();
暂停程序,按下任意键继续
3.占位符
eg:console.writeline(“oo{0},bb{1}”,n1,n2);
与c的%d类似。
4.console.readline()
读取字符串
5.@
1.使\转义 eg:@“\n+\k”。
2.将文本按编辑的原格式输出。
6.convert转化;int.parse;double.parse;int.tryparse;
强制将变量转化类型,但需要变量基本接近。
输入方式:double a=convert.todouble(console.readline());
parse转化方法:int number=int.parse(“123”)
tryparse转化:int number=100;
int.tryparse("123",number)
如果能转化,把值赋给number,不能转化,把number值变成0;
7.+±-运算符还有+=,-=,/=,%=
+±-能力和vc中的c一样,没什么特别的。但计算顺序是从左到右边。
+= 等同于a+=2,a=a+2;
8.关系运算符
<
=
<=
!=
用bool来描述对或者错
bool b = 12>10;
return true//or false
9.逻辑运算符
&& 与
|| 或
! 非
逻辑与优先级高于或,但写代码时切记括起来,明确不容易出错。
10.if语句
if(判断条件)//真执行,假不执行。
{
内容;
}
一种情况判断。
11.if —else语句
if(判断语句)
{
内容;
}
else
{
内容;
}
两种情况判断//else只和最近的if配对
12.if-elseif语句
if(判断语句)
{
内容;
}
else if(判断语句)
{
内容;
}
…
else
{
内容;
}
多种判断情况
13.异常捕获,try-catch语法
try//try和catch之间不能有其他代码
{
可能出bug的语法;
}
catch
{
出bug后我运行的语法;
}
哪里函数有可能出异常,try它
正常运行try,bug走catch。
灵活应用bool可以达到内外执行代码的作用:bool a=true;
catch{a=false;}
if(a)
{代码内容;}
14.变量作用域。
和c接近,目前没有什么不同。
15.switch -case语句
switch(值)
{
case 值1:执行代码;
break;
case 值2:执行代码;
break;
..........
default :执行代码;
break;
}
16.while循环
while(条件)
{
内容;
}
条件成立,内容进行。
break打破循环。
17.do while循环
do
{
内容;
}while();
与c一个吊样
18.continue
和c一个吊样,回到上一次循环。//中文意思是继续。懂得都懂
19.for语句
for(i=0;i<10;i++)
{
}
依旧一个吊样子。
20.三元表达式
(判断条件)?(内容一):(内容二)
和c一个吊样子,无奈
21.随机数的产生:
random r=new random();//r是变量
int s=r.next(1,10);
用两步产生随机数
可以去到最左边的,不能取到最右边的
2.random.range(0,3);
从中选一个,0—2中。
22.常量
const int n=20;
const+变量类型+(变量名=值);
常量不能改变
变量可以多次赋值
23.枚举
格式:
【public】 enum 枚举名
{
值1,
值2,
值3,
.......
}//最后一个可以不加 ,
解释:
public:访问修饰符,它是最高权限,哪里都可以用,在枚举中不用必须加,对于【】,不想加也没问题
enum:枚举关键字,声明,我要开始枚举了
枚举名:爱咋命名咋明明,别作就行
一般枚举位于namespace的位置下面,我觉得可以将枚举看成一种库,自定义的数据库。也许对于大型开发有作用
同时,枚举可以和int相互转化(默认),如果没有定义内部数字,那么他强制转化的数字和数组一样,从0开始,按顺序转化数字。如果是数字文字混合,好比a,2,b.那么强制转化{int b=(int)age.a;}其中为,0,2,3.规律就是往后加一,有数字就用数字。
那如何将输入的字符转化成枚举呢?(不用太了解)
(枚举的名字)Enum.parse(typof(枚举的名字),输入的字符);
无论何时,枚举的名字都要进行声明并且字符必须要是枚举类型里面有的东西。没有就报错,如果转换的是数字,则正常进行。输入1那么对应的就是枚举中与整数对应的1。
格式eg:
public enum age
{
我,
是,
你
}
引用:age a=age.你;
24.结构 //变量类型
一次声明多个不同类型的变量(c语言侵权警告)
位置:namespace
【public】 struct 结构名 //再次声明public是权限,可以省略
{
【public】 变量 _变量名;//字段吧,_+变量名是行业规范,public是让
.................................... //变量公开,让他在main中也可以用
}
eg:
引用:
结构名 自己定义一个接收的名字;
定义名字._结构体内部的名字;
…;
25.数组
数组类型 【 】数组名=new 数组类型【长度】;
目前观察和c一样。
eg:
int [ ] number=new int[10];
number[6]=10;
(第一种和第二种必须掌握);
number.length//数组长度,count好像也可以返回长度,格式一样但本质好像不一样。
26.方法(函数)
c#中的方法等价于c中的函数,格式如上。
static是面向对象要掌握的东西,暂时没细学。
在main函数中调用,需要,program.方法名(值);
也就是类名.方法名(值);
其实,这就和一直接触的console.readline();一样。console是类,readline是函数名字,然后括号,引入值,每个函数都有自己的值,因为readline的类型是string,所以他只能被string储存。也就印证了我们写方法时候的返回值的类型。
关于返回值类型,没有返回值的填void
//方法要以功能为主,不是用户为主,尽量要减少输入一类的字眼
27.return
1)在方法中返回方法的值
2)结束本次方法 //一般不会出现在主函数里面,用过的人都说好的不得了呢
28.array.sort()和array.reverse的简单用法
array.sort(数组):从小到大排序好
array.reverse(数组):倒着排序 //自己编也行,蛮简单的。
29.全局变量的设置
其实c#并没有全局变量的设置,我们可以依靠函数声明来处理达到接近全局变量的能力
eg:
public static int _number=10;
//这样就可以达到全局变量的作用,任何地方都可以应用。
30.out参数
eg:
public stratic void _shah (int [] a,out int b,out int c,out bool d)
{
b=a[0];
c=1;
d=true;
//用out声明的值,不需要加入return,但是他必须要在方法中有值
}
引用(现在在主函数里面啦)
_shah( a ,out m,out c,out d)
然后,m,c,d的值就会改变(a是带入的数组)
如果函数有返回值,那就正常返回就可以了,out的赋值在函数的out c中已经结束了。
可怜的c#,没有结构体
31.ref参数
ref一用六亲不认
把传到给函数的值,在函数里面改变了,不需要return。
有点类似指针,但绝对不能用它比较,只是有点接近。
refect也许是他的全称,映射,思考。
要求:
在方法的外部必须对ref对象赋值。
32.params参数
要点:
1.参数数组必须是形参最后一个参数,说人话就是把他放最后。
2.params的能力是将输入的多个数字自动转变成数组。
3.params也是可以正常识别数组的(引用函数的时候在params数组的位置直接放数组也ok。)
4.params一个方法里只能有一个。
33.方法的重载
意思:方法的名称相同,参数不同(有点c++的感觉,就是那个>>)
小心重名!!!! 参数一样名称一样,返回值不同或者相同就叫重名了
用法很简答,只需要写几个相同名字的方法就可以了,但是值不同,这样就可以重载了。在主函数里,你爱怎么引用就怎么引用。但是不同的引用值结果也必然不同。
34.递归
用过都说好 (恶)
小笔记
递归结束后返回时也是一层一层的返回,所以如果有return ,那你十层递归也要返回十次才能达到第一层。而不是直接瞬闪回去。