C#预处理器指令
#define #undef 声明一个不需赋值的变量
注意的一点事它必须放到using 上面,如

#define TEST
using System.xxx;
public class Task
{
public Task()
{
}
}

#region #endregion
这是一组用来帮助管理代码布局的指令

#if #else #elif #endif
if else 没什么好说的。不过这个一般要跟#define搭配使用

#warn #error
输出警告或错误

#if DEBUG

#endif

这个比较有用,指定了一个只在调试的时候才执行的代码块,发布的时候会被自动删除

当然 这些功能都可以用一组快捷键来实现:  CTRL + K ,CTRL + S

选中一段代码然后使用这组快捷键就可以


ref参数

当把一个参数传给一个方法的时候,如果这个参数是传送的值,那么无论在方法中它被如何更改都不会影响方法外的原值;但如果加上ref的话,这个值就会被作为引用传递

static void Reset(ref int b)
{
b = ;
} static void Main(string[] args)
{
int n = ;
Reset(ref n);
}

注意的是,定义和使用方法的时候,形参和实参前都要加ref;


可选参数

有的时候某些参数是可选的,并且有默认值。(有点像重载)

static void Reset(int b,int c = ,int d=)
{
Console.WriteLine("n:{0}", b+c+d);
} static void Main(string[] args)
{
Reset();
}

但要注意的是可选参数必须放到最后定义。下面这样是不对的

static void Reset(int c = ,int d=,int b)
{
Console.WriteLine("n:{0}", b+c+d);
}

调用的时候 是按顺序赋值。

Reset();//给b赋值
Reset(,);//给b,c赋值
Reset(,,);//给b,c,d赋值

但如果不想按顺序赋值,或者有些参数不想赋值则可以用以下方式调用

Reset(,d:);//给b,d赋值

属性的概念

public class Person
{
private string name; public string Name
{
set
{
name = value;
}
get
{
return name;
}
}
}

如果不添加set访问器的话,就成了只读属性。(相应的也有只写属性)

public class Person
{
private string name;
public string Name
{
get
{
return name;
}
}
}

这还有种简单的写法

public class Person
{
public string Name{set;get;}
}

但这种自动实现的属性必须有两个访问器。否则会出错,如下面这样

public class Person
{
public string Name{get;}
}

如果想设置只读的话,可以通过改变访问权限的方式实现:

public class Person
{
public string Name
{
private set;
get;
}
}

 继承

①在C#中 子类调用父类要用base,如

public class Student:Person
{
public override void ShowName()
{
base.ShowName();
}
}

这就如同Java中的super一样。

②对于父类的方法,如果想将来可以被覆盖的话,必须显式的将函数声明为virtual,而子类覆盖该方法的时候也必须声明为override。这是因为在C#中方法默认都是虚方法。这跟Java是截然不同的。

③抽象类

如果某个类是抽象的话,那么该类中的方法也都必须是抽象的;相反,如果某个方法是抽象的话,该类也必须是抽象类。

这个抽象关键字与Java中相同,都是abstract。注意的是抽象方法声明为abstract而不能加virtual。

④密封类

将类声明为sealed意味着该类无法被其他类所继承。这个的用处参照类string

⑤关键字internal

带有internal的类或属性方法只有在同一个程序集(命名空间)下的程序才能获得,等同于Java下的default。


VS2010中比较有用的快捷键

  • 定位搜索

编辑(Edit)菜单中选择“Navigate To”(定位到) 或者通过Ctrl+, 打开定位搜索窗口。在搜索栏(模糊查询的功能很强)中输入查询内容,VS2010 将列出相关结果信息。

双击搜索结果可到达代码位置。

  • 调用层次结构

在方法、属性、构造函数上点击鼠标右键可查看调用层次结构,如果是刚接手的项目就可以用这个方法了解其相关程序结构。

  • 查看引用情况

Ctrl + K + R 可查看方法、属性、构造函数的引用情况,代码重构和了解代码结构的利器


VS的WCF测试工具

路径 Microsoft Visual Studio XX.0\Common7\IDE\WcfTestClient.exe

还有一个第三方的服务测试工具 SoapUI 用法类似


页面错误事件监听

网页出错误再说难免,后台错误处理不够谨慎,数据格式判断不够全面,都有可能出现。但是这些东西不能让用户看到,即使是拿个委婉点的Sorry Page来糊弄也可以。

为了解决这个问题,我们可以覆盖Page的OnError事件(当后台处错误的时候都会进入该事件),并作出相应处理 一般是跳转到某个指定页面

protected override void OnError(EventArgs e)
{
Response.Redirect("Sorry.htm");
}

最新文章

  1. ENode 1.0 - 消息的重试机制的设计思路
  2. 处于同一个域中的两台Sql server 实例无法连接
  3. c# winForm 等待窗体的实现
  4. 自适应游标共享技术02(一个简单的例子来走近ACS)
  5. firefox和chrome对于favicon.ico关于content-security-policy的不同处理
  6. 多线程下不反复读取SQL Server 表的数据
  7. java集合(2)- java中HashMap详解
  8. 为mysql数据库建立索引
  9. MySQL学习笔记(二)
  10. .Net core验证码生成
  11. Opencv3.4:显示一张图片
  12. Github 开源项目(二) jsmpeg-vnc
  13. Sereja and Table CodeForces - 425B (暴力,状压)
  14. zclip复制到剪切板插件有个bug
  15. PHP二维数据排序,二维数据模糊查询
  16. 2016-3-19日小结:scrollTop
  17. Solr DIH query 工作流
  18. 表单的编辑添加和删除 .removeClass() .append() .preAll() .attr('b') document.createElement()
  19. Country Meow
  20. JavaScript周报#183

热门文章

  1. Linux内核知识
  2. C#设计模式——模板方法(Template Method)
  3. CSS浏览器兼容性写法小结
  4. 【C#】OOP之多态那点事
  5. 【JavaScript回顾】闭包
  6. ASP.NET 使用AJAX让GridView的数据行显示提示框(ToolTip)
  7. Android开发总是难以入门
  8. 译 PrestaShop开发者指南 第四篇 深入PrestaShop核心开发
  9. NoSuchMethodException <init>()
  10. iOS UITableview