关于C#的学习
长期以来对C#的认识一直停留在微软件开发的完全面向对象的语言的模糊印象上,对其工程也缺乏多文件以上级别的修改能力,而当前流行度的驱使下,想深入了解它并运用。
于是从git上下载了一个C#开源项目,打开工程查看了一翻。。。
一、工程
工程以.cs文件为主,少编译出来的二进制文件,以及工程配置文件是其它后缀。
虽然后缀大多是.cs,但工程还是以不同特定命名的文件来分开存储不同功能的文件。
代码及其源文件都是.cs文件,并且与C/C++不同的是它没有头文件,可能这是C/C++程序员在刚接触时最大的障碍了。
C#中有许多开源库,但以引用的形式包含在工程中,这替代和简化了类似C/C++头文件的功能。
C#中多出了委托、事件机制, 委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。类或对象可以通过事件向其他类或对象通知发生的相关事情。发送(或引发 )事件的类称为“发布者” ,接收(或处理 )事件的类称为“订阅者” 。
二、运算符
学一种新的语言,最关键的还是先了解其运算符,运算符是语言的芯片。这也是构成整个语言最基本的规则。所有的数据无论是关键字、变量、表达式,都需要有运算符连接起来才有意义,否则,也不过一个死的字母堆。
语言因为运算符而千变万化,驾驭运算符就犹如天地间的弄潮儿,上九天、下五洋。
了解到C#的一些关键特性之后,与C/C++相比,需要特别注意的运算符便有以下几种:(如果重载 ==,则还必须重载 !=)
+ 运算符既可作为一元运算符也可作为二元运算符,委托类型也提供二元 + 运算符,该运算符执行委托串联。
- 运算符既可作为一元运算符也可作为二元运算符,委托类型也提供二元 - 运算符,该运算符执行委托移除。
* 乘法运算符 (*),用于计算操作数的积。另外还用作取消引用运算符,允许读取和写入指针。* 运算符还用来声明指针类型和取消引用指针。该运算符只能在不安全的上下文中使用,通过unsafe 关键字的使用来表示,并且需要 /unsafe 编译器选项。取消引用运算符也称为间接寻址运算符。
& 运算符既可作为一元运算符也可作为二元运算符。一元 & 运算符返回操作数的地址(要求 unsafe 上下文)。
+= 加法赋值运算符,不能直接重载 += 运算符,但用户定义的类型可以重载 + 运算符(请参见 operator)。【联系到+与委拖相关的功能,想必这个运算符也具有该功能,其它相关符号类似】
<<= 左移赋值运算符。
-> 运算符将指针取消引用与成员访问组合在一起。-> 运算符只能在非托管代码中使用。不能重载 -> 运算符。
?? 如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。
特殊的,下边这个符号未被收录在C#的运算符中,只用在了类继承之中
: 用于继承
三、关键字
主要关注了一下C#与C/C++中不同的关键字,以便快速了解语法
几个典型的关键字如:
decimal 16字节的浮点,比double类型浮点8字节大一倍。
delegate
是一种可用于封装命名方法或匿名方法的引用类型。
event
关键字用于声明发布服务器类中的事件。
通过关键字,可以知道,C#是强类型的