以下是我总结的平时遇到的最常见的技术点(可称为"刀法"),掌握好这些变幻的"刀法",有助于代码的简洁以提高效率。
using的三大用法:
1. 导入命名空间(类似于Java的import,C语言的include)。
2. 为命名空间设置别名。在多个命名空间中存在同名的成员时加以区分。
3. 在范围结束之前或中途出现异常即时释放资源。需要说明的是,该资源的类型必须实现IDisposable接口。
@的三大用法:
1. 可以将字符串原义输出(特别是转义字符,如:\)。
2. 用来表示跨行的字符串,也即可以在多行内声明字符串。
3. 可以加在保留字前当作标示符使用(如:@class、@static)。
预处理指令,有你更轻松
1. #define和#undef: #define用于定义一个符号(类似于变量),但没有实际的值,不是实际代码的一部分,只是在编译代码时存在,如:#define DEBUG。如果这个符号已经存在,该指令将不起任何作用。#undef正好与之相反,删除一个已存在的符号,如:#undef DEBUG。两者都必须放在C#源文件的开头(命名空间之前)。
2. #if、#eif、#else和#endif:告诉编译器是否要编译某个代码块。#if...#endif首先要检查之前是否定义过(#define)某个符号,如果定义则执行之间的代码,通常用于调试代码(debug),当调试完毕后只需注释掉#define,所有的#if块代码都会奇迹般消失,可执行文件也会变小(类似于C/C++的条件编译)。同样#eif和#else与C#的else if和else很类似,用于多次条件判断。
#define DEBUG
#define W2K
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("需要调试的代码");
#endif
#if W2K
Console.WriteLine("Windows 2000");
#elif WXP
Console.WriteLine("Windows XP");
#else
Console.WriteLine("Windows 7");
#endif
}
}
}
3. #warning和#error: 当编译器遇到#warning时将产生警告信息并向用户显示之后的文本继续执行之后的代码,当遇到#error时将产生错误信息然后立即退出编译。
#warning "代码发布前,请删除所有的调试信息"
Console.WriteLine("警告后将继续执行");
#error "在此产生错误,无法继续执行"
Console.WriteLine("无法继续执行");
4. #region和#endregion: 将代码块进行折叠以便更好的维护程序。
#region 代码折叠块
var i = 0;
Console.WriteLine("我将当前的代码块折叠");
#endregion
ASP.NET Web Application和Web Site的区别:
1. 前者编译速度快,可以生成单一的程序集,支持VSTS和MS Build构建,更强大的代码检查功能和源代码管控能力,支持VS2003的大型系统的直接升级。
2. 后者动态编译单页面并马上看到效果,不用编译整个站点,可以将错误的页面和需要使用的页面分开;可发布单独的文件夹而不是整个项目,可通过Web Deployment插件生成程序集。