C#的学习之路

由于工作要使用的缘故,所以只能从零开始学习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。
显示转换:强转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值