由于工作要使用的缘故,所以只能从零开始学习C#了。或许计算机行业的从业人员就是这样,无论是新技术老技术只要工作中有了需求就要突然马上学会使用。不过我的时间还很充裕,提前学习一下并用博客记录自己的学习过程(现在真的是完全不会),不过也希望以后有了机会能够去做游戏,或者去做一名算法工程师。
废话就说到这里,看看领导都让我学习一下什么东西呢:
关键词:C#/ ant-design-vue / ant-design-pro-vue/ .net / jeecg-boot /jepaas/
现在还不知道这些都是个啥,所以一点点来把。
在csdn上花了39个币买了一个C#入门经典这个书看看,好像还很细致的。
上来第一章就介绍.net了,那么什么是.net呢?
.net是微软为了开发应用创造的一个平台,可以跨平台,不只是windows系统的应用。可以创造web应用,桌面应用,store应用,没什么限制。可以用于C#和C++和JS等很多语言上面。.net是一个巨大的代码库,可以通过面向对象编程的方式来使用其内容,这个库分为不同功能的模块,往下还有更细的子模块,手机应用的话支持所有核心的.net功能,但是不需要太多的上层功能。
那么创建.net应用的步骤是如何的呢?
把.net兼容语言的代码编写好,把代码编译成CIL(中间语言代码),执行代码时,把代码通过JIT编译器编译为本机代码,最后在托管的CLR环境下运行。
昨天后来打游戏去了,那么今天继续:
C#的注释可以用/* */或者//,其中前者可以跨行注释,后者不可以。
C#是大小写敏感的语言。
代码大纲功能:
#region XXX
代码
#endregion
这样一来就把代码隐藏了,名字叫做XXX。region是区域的意思。
变量的定义是:变量类型 变量名;
字符串里反斜杠加一个字符可能是转义。一成不变的指定字符串的方法是在前面加一个@,如:
@“C:\abc\aaa"等同于 “C:\abc\aaa
变量名不可以用数字开头,变量名中不能有下滑线和@之外的符号。
命名规范:还是小写加大写来定义变量。
把运算符放在操作数的前面,这个运算将优先进行计算再做其他计算。
命名空间不能声明变量,要在class中进行声明。
(第二课)
一些语法规范:
语法似乎和C++没什么差别
枚举:使用一个基本类型来存储,枚举类型可取的每个值都是该类型的的一个值。
#byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127
enum orientation:byte
{
north = 1;
south =2;
}
#一个骚操作,string 转换枚举
string myString = "south";
myDirection = (orientation)Enum.Parse(typeof(orientation), myString);
Console.WriteLine("myDirection is {0}", myDirection);
#输出的是2
结构(struct)不同数据类型组成的结构
struct route
{
public orientation direction;
public double distance;
}
数组:必须在访问之前初始化,初始化有两种方式。
1)字面形式指定完整内容:int[] myIntArray = {5,6,7,8,9};
2)确定类型和元素个数:int[] myIntArray = new int[5];
默认值是0.
foreach 循环
循环中不可以更改值,遍历数组中的每个元素
foreach(string friendName in friendNames):
{
Console.WriteLine(friendName);
}
函数:由三部分组成:
1)static 或者void 关键字
2)函数名加一个()
3)一个要执行的代码块
params 参数:可以接收任意个int值,后续可以用foreach进行迭代处理。
static int SumVal(params int[] vals)
{
int sum = 0;
foreach(int val in vals)
{
sum += val;
}
return sum;
}
ref 关键字:通过引用传递参数,函数处理的变量和函数引用的变量相同。
不可以用ref初始化或者改变const的值。
static void ShowDouble(ref int val)
{
val*=2;
Console.WriteLine("val double = {0}",val);
}
如果想要把未赋值的变量实现上述效果,可以使用out。
作用域:
利用static关键字声明全局变量来使得多个作用域能够访问这个变量。
关于main函数,传入的args参数是从应用程序外部接收的信息。可以用foreach进行遍历。在项目-属性-左侧的调试中可以添加外部信息,想传入带空格的长信息用双引号。
委托delegate:
1)如何从输入中按照逗号把字符串分块(假设input中已经readline了)
commaPos = input.IndexOf(’,’); 拿到逗号的index
input.Substring(0,commaPos); 前面是从index几开始 后面参数是取多少个 index如果是4,从0开始取4个正好取到index为3.
input.Substring(commaPos+1,input.Lenth-CommaPos-1)
在函数区声明一个委托,在class中定义一个委托对象(不new),之后通过new创建这个对象,传入不同的参数会让这个对象变成不同的函数。
调错方法:
release调试中不会运行debug下的内容,因此用debug.WriteLine()等函数要在debug调试下运行程序才有效。
Debug.assert()中断程序的执行
设置断点十分有用:在断点处可以设置当变量值为x值或者其他条件产生时候输出什么信息。访问多少次的时候输出什么信息。
监视变量的内容。
结构化异常处理(try catch final)
隐式转换:任何类型A只要取值范围完全在类型B范围内,A就可以隐式转换成B。
显示转换:强转。