1、命名空间的别名:using A = NamespaceZ.NamespaceY.NamespaceX; using指令不会出现累积现象,而是独立计算的
extern alias AssemblyName ,使用的时候 为AssemblyName::Namespace.MethodName
2、Main入口点,如下为四种合法签名:
static void Main(){}
static int Main() {}
static void Main(string[] args) {}
static int Main(string[] args) {}
Main必须是静态的,而且是私有的,尽管没有要求这么做
3、当引用类型不再需要的时候,把它们设置为null
4、在值类型声明中添加类型修饰符?就可以声明一个可空类型,如下所示
double? variable1 = null
计算可空类型
double variable2 = variable1 ?? 0
5、C#可以使用的预处理命令
#define #undef 声明式预处理器指令,用来分别定义预处理符号和取消预处理器符号的定义,必须放在任何源代码之前
语法:#define identifier #undef identifier
#if #else #elif #endif 条件式预处理器指令,条件式预处理器指令是以#if开始,#endif结束。介于中间的#else和#elseif是可选的
#line 修改编译器错误和错误报告中的行数
#line line_number source_filename
#line default 取消前面设置的任何#line指令,将行号设为自然行号
#line hidden 与行号无关,在单步调试程序时非常有用
#error #warning 诊断指令,#error指令阻止程序顺利通过编译;#warning指令不会阻止程序顺利通过编译,除非设置“将警告视为错误”
语法:#error error_message #waring error_mesaage
#region #endregion
#pragma 禁用和启用编译警告
#pragma waring disable warning_list
#pragma warning restore warning_list
6、短路计算&&和||
7、嵌套类
私有的嵌套类只能在外部类的内部实例化。通过嵌套类的构造函数提供外部对象的访问,即给内部类的构造函数传递一个外部对象的引用作为参数,然后,在嵌套类的内部就可以使用该引用来访问外部对象的实例成员
8、按位枚举
使用按位与运算符确认一个标记是否存在