.Net学习 第1季 C#基础

眉间皱痕 提交于 2020-04-07 01:59:01

.Net 视频学习第1季 C#基础

 

01 基础语法

基本上和C++差不多

注释符有三种    单行注释://  多行注释:/*  */  文档注释:///(多用于解释类和方法)

 

常用快捷键

ctrl+S 保存  ctrl+Z 撤销上一次操作  ctrl+K+C 注释所选代码  ctrl+K+U 取消所选代码注释  ctrl+K+D 快速对齐代码  home 光标跳到该行起始  end 光标跳到该行结尾

#region与#endregion中间的内容可以折叠起来,注释可以写在#region的后边(至少隔一个空格),C++没有这个语法

常用数据类型  int 整型  double 双精度小数  float 浮点数  decimal 比double表示范围小但精度更高的小数,常用于金钱表示,数字结尾要加m  string 字符串  char 字符

变量要先声明后赋值再使用

String s = ""; 这个String是.Net中所有语言共享的类, string s =""; 这个string是C#的关键字,在C#语言中这两句代码编译后没有区别,都映射到System.string类

 

命名规范:变量用camel命名法,类和方法用pascal命名法

加号运算符的重载:如果操作的其中一个变量为string,则另外一个变量会隐式转换为string,再进行string连接操作,注意C++没有这个语法,在C++中会提示加号运算符没有相应的重载,两个变量类型不匹配

(写习惯C++了,所以还是会选择显式转换提醒自己)

占位符{n},n从0开始算,Console.WriteLine("带占位符的字符串", {0}的内容, {1}的内容,...);注意真正使用的占位符可以不按0,1,2...的顺序使用,也可以定义了占位符的内容但不使用

(有点C语言中printf的风格,不过不需要再指明占位内容的数据类型,C#会将所有数据类型自动转换为string并进行连接操作)

 

所有的数据类型都可以转为string,而C#为我们提供了函数(方法:XX.ToString(xx)),并在某些地方做了自动转换(例如加号晕算法)

 

交换变量先开辟第三方变量作为中转(当然对于数值类型的变量x y交换,可以x=x-y; y=y+x; x=y-x;来完成)

 

常用的用户输入输出语句

Console.WriteLine("XXX",{0},{1},...);  // 带占位符的控制台输出

Console.ReadKey(); // 暂停程序,等待用户输入任意键,显示该键入到控制台

string str = Console.ReadLine(); // 暂停程序,等待用户输入一行字符并以回车结束,将结果保存到string类型的变量中,注意返回结果是string类型,只能用string的变量来(直接)接收

 

关于转义字符/,和C++的没有太大区别,不过C#为了方便使得字符串中的/不起转义作用(也就是说/是字符串本身的内容,常见于文件路径字符串中),设置了@,在字符串前(第一个双引号前)添加@,

取消字符串中/的转义作用,并且会按照字符串输入格式来生成(能辨认换行和换行后的空格)

 

数值数据类型的隐式转换,注意decimal的精度比double的精度要高,显式转换,注意要同为数值类型的变量才能转换

注意:

int a = 10;
int b = 3;
double c = a / b;

这样得到的是c是3,当然是double类型的3,原因是先执行a/b,这是int/int,得到int 3,再将int 3赋值给c,但c是double,执行隐式转换,得到double 3。如果想得到double 3.33333,可以这样写:

int a = 10;
int b = 3;
double c = a * 1.0 / b;

这时候a*1.0在执行时会将a隐式转换为double 10.0,之后的结果都是double类型,自然得到3.33333
更通常的情况是两种不兼容的类型转换,C#提供了一个public static class,名为Convert。(static class,因此不能被new,用于实现纯函数)

string s = "123";
double d = Convert.ToDouble(s);
int a = Convert.ToInt32(s);

d = 12.34;
string str = Convert.ToString(d);

注意:一切数据类型都可以转为string,但是string转数值类型时有可能出现输入非法的情况,譬如s="123abc",这样再使用ToInt32之类的转换方法就会抛出异常。

关于逻辑运算符&&和||,以及&和|:语法上&&和&都表示逻辑与,||和|都表示逻辑或,所以运算结果是一样的,但是&&和||的效率更高,因为对于

bool b1 = 5 < 3 && 4 > 3;
bool b2 = 5 > 3 || 4 < 2;

b1在计算5<3之后立刻就知道与的结果b1为false,所以4>3这一句是不会执行的(因为没有必要),但是如果用&的话,就会执行这句,再看5<3(false)和4>3(true)进行想与的结果。同理b2在计算5>3之后就知道或的结果为true,也不会执行4<2,但是|的话就会执行。因此

int a = 10;
int c = 0;
bool b = ( a++ > 0 ) || ( c++ > 10 );

运算后a等于11但是c依然等于0,因为c++>10这句代码没有执行。(尽量避免这种自增自减和其他语句混合的写法)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!