1. try catch
- try 用于检查发生的异常,并帮助发送任何可能的异常。
- catch 以控制权更大的方式处理错误,可以有多个catch子句。
- finally 无论是否引发了异常,finally的代码块都将被执行。
- throw 用于引发异常,可引发预定义异常和自定义异常。
try
{
//有可能发生错误的程序块
}
catch (Exception)
{
//当发生错误的时候才会执行的代码块
throw;
}
finally
{
//无论是否发生错误都会执行的代码块
}
写try-catch语句的时候一定要注意以下几点:
- 尽量给CLR一个明确的异常信息,不要使用Exception去过滤异常
- 不要轻易将try-catch写在循环中
- try尽量少的代码,如果有必要可以使用多个catch块,并且将最有可能抛出的异常类型,书写在距离try最近的位置
2.C# 开发相较于其它语言的优势劣势
优点:
- 1.C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。
- C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
缺点:
- C#不适用于编写时间急迫或性能非常高的代码,例如一个要运行1000或者1050次的循环,并在不需要这些循环时,立即其管理它们所占的资源。
- C#缺乏性能极高的应用程序所需要的关键功能,包括保证在所代码的特定地方运行的内联函数和析构函数。但这类应用程序非常少。
3.使用 unsafe 代码
首先要在 : 项目属性 - 生成选项里 - 勾选允许运行不安全代码
unsafe可以用来修饰类、类的成员函数、类的全局变量,但不能用来修饰类成员函数内的局部变量
class PointerDemo
{
public int x, y;
}
class Program
{
unsafe static void ChangeValue(int* x, int* y)
{
*x = 200; //修改所在地址值
*y = 300;
}
unsafe static void Main()
{
var obj = new PointerDemo();
Console.WriteLine("原始值: {0}, {1}", obj.x, obj.y);
fixed (int* n = &obj.x)
{
fixed (int* p = &obj.y)
{
ChangeValue(n, p); //取data地址并传递
}
}
Console.WriteLine("改变地址后: {0}, {1}", obj.x, obj.y);
Console.ReadLine();
}
}
4. 反编译工具
最常用的是Reflector,但是已经收费了,ILSpy好像也不错
参考列表:
1.C#之Try……Catch实例 : https://blog.csdn.net/djuan15732626157/article/details/50708125
2.C# 深度剖析try catch finally及其性能影响 : https://blog.csdn.net/u012391923/article/details/53432455
3. C#基础—不安全代码(unsafe code) : https://www.cnblogs.com/lgx5/p/7353346.html
4..net反编译的九款神器 : https://www.cnblogs.com/zsuxiong/p/5117465.html
扫描二维码关注公众号,回复:
2710275 查看本文章