游戏开发方向学习中,若有知识点错误或者遗漏请指出,仅仅是个人理解和笔记
输入输出及控制台设置相关控制台设置相关
Console代表控制台的意思,这里的输入输出也是对应到控制台中。
Console.Clear();
清空控制台
Console.SetWindowSize(宽,高);//控制台大小,也可以通过控制台右键属性来修改
Console.SetBufferSize(100,50);//缓冲区的大小,只能比控制台大或者等于
Console.BufferHeight;//返回值得到缓冲区的高
Console.BufferWidth;//返回值得到缓冲区的宽
控制台以及缓冲区大小设置,缓冲区相当于控制台中可以显示的区域
Environment.Exit(0);
关闭控制台,在文件打包为exe文件后打开程序就会自动的关闭,在编译器调试模式下是不会自动关闭的
输入相关
using System;
class Test
{
static void Main(string[] args)
{
int Num = Console.Read();
string Sum = Console.ReadLine();
Sum= Console.ReadKey();
}
}
这对应了三个输入方式
Console.Read(); 只会记录输入的一个字符,如果是字符串则只会记录第一个字符,在输出时则会输出这个字符的ASCII码,不论使用什么类型的变量来记录都只会记录第一个字符。
Console.ReadLine(); 这里会记录所输入的字符串,并且在输出的时候该字符串。
Console.ReadKey(); 监听键盘输入,会暂停程序执行直到按下任意键,然后就会退出监听继续执行程序,若是在括号中写上true就不会将输入内容显示在控制台中,默认是Console.ReadKey().KeyChar可以得到用户输入的值。 Console.ReadKey(true).Key;这是一个枚举类型,里面存放了很多按键信息,可以直接点出来使用不用再设置这些按键。
if(Console.KeyAvailable){ }
在控制台中检测用户的输入时不会卡住程序,他会判断是否使用了键盘,有使用才为ture,没有就为false,但是他会影响性能,将想要检测的东西放进去就会产生作用
Console.CursorVisible=flase;
光标的显隐,false为隐藏,true为光标闪烁
Console.SetCursorPosition(10,5);
光标的位置,控制台左上角为原点,右侧是x轴正方向,下方是y轴正方向,设置时要注意边界问题,由于横纵距离单位不同,会有视觉差异,需要手动设置1y=2x 。
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.Red;
ForegroundColor设置控制台显示字体颜色,BackgroundColor显示字体背景颜色,都是只有这行代码后面的才会变色, ConsoleColor是系统已经封装好的颜色,直接使用
输出相关
Console.WriteLine("Hello Wrold");
console.Write("Hello Wrold");
WriteLine会将括号中的字符或者变量输出,并且自动换行,Write不会自动换行。
Console.WriteLine("我的名字叫"+name+"我今年"+year+"岁了");也可以像这样用加号进行拼接输出
Console.WriteLine("wow{0}", Num);也可以使用这样的形势进行拼接,大括号内要从0开始,逗号后面按照顺序填变量。
变量常量转义字符及折叠代码折叠代码
#region MyRegion(此处可以为所折叠的代码做提示)
#endregion
#region然后按tab会自动补全
变量类型
整数类型 sbyte、byte、short、ushort、int、uint、long、ulong 、char
浮点型 float 和 double 布尔型bool
十进制类型 decimal 这是一个精确值,最多小数点后28位
变量申明格式 变量类型 变量名=数值;可以不赋值
int num=1; float sum=0.1f;
float申明后面一定要加一个f,double不需要,是因为申明的小数默认为double类型,decimal申明后面加m。
int num = sizeof(int);
string sum=typeof(num);
sizeof()用来显示出所占的内存大小。typeof()用来表示变量类型,包括对象类型
var 隐式类型
它可以用来表示任意类型的
但是不能用作类的成员,只能用作临时变量申明时,一般写在函数语句块中
必须初始化且一旦初始化无法再改变他的类型,在不确定类型的时候可以装载变量
常量
常量是个固定值,在程序运行的时候数值不会被改变。
const加在变量类型的前面就会变成常量。
const int num=50;
转义字符
tab键的作用是空四格,转义字符t(水平),v(垂直)
光标退格b,作用是打印的时候将b前的一格删除
Console.writeline("123b123") ; 输出结果就是12123
警报音a,如果只输出这个,电脑系统会发出警告的声音
取消转义字符,在字符串前加一个@
加上?“”等符号就等于其本身,用于字符串中
类型转换隐式转换
double d;
int i = (int)d;
这样就可以将一个变量直接转换成指定变量,隐式转换并且是安全的方式,数据不会丢失,但是若是显示转换比如小数转成整形会向下取整,数据会不完整。
显示转换
parse法,专门将字符串转换成别的类型的,且必须能转换成对应类型,否则报错
x=int.parse("123");
convert法,什么都可以进行转化,而且会四舍五入
a=convert.toint32('A');
to后面为所转换的结果的类型+字节,long、int、short都是toint+字节,float对应tosingle、bool对应toboolena
string对应tostring
异常捕获及字符串拼接string str=num.tostring();
字符串拼接
直接用加号进行拼接,
string num="1";
num=num+"2";
但是这样会舍弃原来的内存空间,另外开辟一个新的内存空间进行储存,并且让这个变量指向新的地址,如果拼接整形,则会将他转换成字符串再拼接。
string result=string.Format("wow{0}", Num);
使用Format,跟输出时的使用相同
异常捕获
避免代码报错时电脑卡死
必备部分
try{ }
catch{ }
可选部分
finally{ }
try中放入希望进行异常捕获的代码块,如果报错了,不会让程序卡死,并且从报错开始的那一行后都不会再执行,直接跳入catch中来捕获异常。
catch(Exception e)
{
Console.WriteLine(e.Message.ToString(); //Message是获取描述当前异常消息}
catch(exception e)具体报错跟踪,通过e得到具体的错误信息
finally最后执行的代码,不论有无出错,都会执行
运算符算数运算符
+ - * / %分别对应加减乘除取余
+=在自身的基础上加上需要的那个数,-=和%=等也是一样的
++和--对应自身的加一和减一
++a和a++的区别,++a先加再用,a++先用再加
c=a++;//先将a赋值给c再对a加一
c=++a;//先将a加一再赋值给c
关系运算符
><=对应大于小于等于,当使用在条件判断的时候需要时候==来进行判断
逻辑运算符
&&逻辑与(两个都为真才是真),||逻辑或(两个都是假才是假),!逻辑非
短路规则
当逻辑运算符进行判断的时候,前面的条件符合直接产生结果时,就不再执行后面的条件了
位运算符
&、|、^分别对应与、或、异或,用于二进制计算
异或:相同为0不同为1
>>在二进制数上右移,<<在二进制数上左移,~翻转,将0变成1或者将1变成0
三目运算
固定语法 bool类型 ? bool类型为真时返回值:bool类型为假时的返回值;
三目运算符会有返回值,而且这个返回值一定要被使用且类型要一致。
条件分支语句string str =flase ? "条件为真" :"条件为假"; (第一个空只要结果是bool就行)
if语句
固定语法 if(bool类型结果){ 当结果为真时执行}
else if(bool类型结果){当结果为真时执行}
else{当前面的条件都不满足时执行}
可以不断的嵌套使用
if else语法中不需要写分号,条件从上到下执行,相同层次的条件分支满足了第一个之后后面的就不会执行,每个if寻找离自己最近的else作为同一层次的条件分支
switch语句
固定语法
switch (变量)
{变量 == 常量 执行 case和 break之间的代码
case 常量:
若传入的数值与该常量相等时执行的代码
break;
default:如果上面case的条件都不满足 就会执行 default中的代码
break;
}
常量!! 只能写一个值 不能去写一个范围 不能写条件运算符 ,逻辑运算符
switch 只判断变量是否等于某一个固定值!!!!
default可以不写省略
贯穿:满足某些条件时 做的事情是一样的 就可以使用贯穿,即不写case后面的break
满足 1 3 4 2其中一个条件 就会执行 之后的代码
case 1:
case 3:
case 4:
case 2:
// case和break之间可以写n句语句
// 并且可以嵌套使用
Console.WriteLine("是个数字");
Console.WriteLine("是个数字");
Console.WriteLine("是个数字");
Console.WriteLine("是个数字");
也可以在里面嵌套语句
循环语句while语句
让顺序执行的代码 可以不停的循环执行某一代码块的内容
固定语法
while(bool类型的值)
{
当满足条件时 就会执行while语句块中的内容
当代码逻辑执行完 会回到while循环开头
再次进行条件判断
}
死循环,就不停的执行循环中的逻辑 "直到死为止" ,但是可能因为内存问题 造成程序崩溃 闪退
造成程序卡死
break:跳出循环,但是跳出最内层的一次while语句
continue:回到循环开始 继续执行,这一次循环的后续执行代码直接被跳过然后执行下一次循环并没有跳出语句而是跳过一次循环
do while语句
固定语法
do
{
循环内容
}while(bool类型); // 注意 do while 语句 存在一个重要的分号
while循环 是先判断条件再执行
do while循环 是先至少执行一次循环语句块中的逻辑 再判断是否继续
for语句
固定语法
for( 初始; 条件; 增量 )
{
循环语句
}
第一个空: 一般声明一个临时变量,用来计数用
第二个空: 表明进入循环的条件 一个bool类型的结果(bool变量 条件运算符 逻辑运算符 算术运算符)
第三个空: 用第一个空中的变量 进行 自增减运算
第一次进入循环时 才会调用 第一个空中的代码
每次进入循环之前 都会判断第二个空中的条件 满足才会进入循环逻辑
执行完循环语句块中的逻辑后,最后执行第三个空中的代码
for循环 这三个空位 可以都空着 可以根据需求去填写



