C#学习笔记(一)

最近开始学习C#。学习之前一直觉得C#这种需要虚拟机的语言非常垃圾(...)后来发现其实和C++有一些共同点,很好入门,而且语法也并不像Java那样臃肿.

基本类型: C#没有基本类型,所谓的基本类型都是对象的别名,比如int 是System.Int32 。和C++不同的是在C++中long和int是一样的,而C#中的long相当于C++的long long。不过其实这么做也是有道理的,long本身就应该比int大嘛~ 浮点数方面,除了float和double 还有一个decimal (System.Decimal) , 用来表示相对精确的大数。还有byte,看见这东西真是太亲切了!之前C++写MD5的时候还得用 using BYTE = unsigned char 以及各种强制转换,到C#这里byte就搞定啦。

运算符: 这基本上和C++没什么区别了,看看就行.

简单的输出: Console.Write和Console.WriteLine,C中的printf参数用的是格式控制符,C#这里用{0} {1}这样得符号来输出格式字符串后的args, 可以{0} {1} {0}这样使用。对于类型似乎没有什么要求,这一点对于C++很亲切。

流程控制/循环控制: 大部分和C/C++一样(if-else啊while/do while啊什么的) 唯一令人感到兴奋的是switch. C/C++里面的switch只能用整数(short...int...long...)或者枚举类型(enum),C#的switch除了这些还可以使用string !! (估计可以用好多类型...) 要知道在C/C++里面为了方便的匹配字符串,除了if-else嵌套就是用宏简化一下(不过还是if-else)

变量的转换: 强制转换语法和C一致,都是(Type)Value。除此之外还可以使用Convert系列命令(Convert.ToInt32等等)。转换方面C#还有一个很贴心的地方,checked和unchecked可以用来检查转换过层中是否出现溢出。

数组: C#毕竟没有指针因而声明数组的方法和Java差不多都是 Type[] Value; 定长数组可以静态初始化也可以Type[] Value=new Type[Size]; C#不需要手动释放内存(delete不是关键字...) 可以用foreach循环,和C++ STL的iterator相似(但是感觉更贴近SQL语句)。语法foreach (Type ForeachValue in ArrayName) {...}多维数组不同于Java的[][]而是[,]访问上不同于C/C++的[2][3]而是[2,3]

函数: 函数定义、返回值、重载,这些在C++里都有啦。不同的是由于C#是面向对象的语言,任何函数都属于某个对象,所以除了主要的Main必须是static之外,其它函数如果想不实例化就是用必须加上static,否则就得new ClassName之后才能使用了。(再加一句,C#关于Main的启动方式和Java实在是太像了)参数列表中ref Type和C++的Type&相同, out Type的值会被先清零(?) 重载的时候有ref和普通版本视为两种签名,好评。委托(delegate)其实和就是C的函数指针啦,不过感觉不如C++的function<>灵活.

调试: using System.Diagnostics; (顺便: C#的using 和 Java的import 非常相似, 功能上和C++的#include 类似) Debug.WriteLine() Trace.WriteLine Debug.Assert() Trace.Assert() (其实和C的assert宏没什么区别的)

异常: 和Java一样: try-catch-finally . (什么时候C++也加上finally这个关键字啊...)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值