读书《项目中的.Net》(1)


WinFrom中添加全局异常处理


在Main中添加

ThreadExceptionHandler handler = new ThreadExceptionHandler();
Application.ThreadException += new ThreadExceptionEventHandler( handler.Application_ThreadException);
System.Windows.Forms.Application.Run(new Form1());

同时增加异常处理类

internal class ThreadExceptionHandler
    {
        /// 
        /// Handles the thread exception.
        /// 
        public void Application_ThreadException( object sender, ThreadExceptionEventArgs e)
        {
            try
            {
                // Exit the program if the user clicks Abort.
                DialogResult result = ShowThreadExceptionDialog(
                    e.Exception);

                if (result == DialogResult.Abort)
                    Application.Exit();
            }
            catch
            {
                // Fatal error, terminate program
                try
                {
                    MessageBox.Show("Fatal Error",
                        "Fatal Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                }
                finally
                {
                    Application.Exit();
                }
            }
        }
        /// 
        /// Creates and displays the error message.
        /// 
        private DialogResult ShowThreadExceptionDialog(Exception ex)
        {
            string errorMessage =
                "Unhandled Exception:\n\n" +
                ex.Message + "\n\n" +
                ex.GetType() +
                "\n\nStack Trace:\n" +
                ex.StackTrace;

            return MessageBox.Show(errorMessage,
                "Application Error",
                MessageBoxButtons.AbortRetryIgnore,
                MessageBoxIcon.Stop);
        }
    }

.Net开发过程中的一些细节

equals()和运算符==的区别


==比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量中存储的内存地址是否相同
equals()是两个变量是否是对同一个对象的引用,即比较内存地址所指对象的内容的比较


const和readonly的区别


const是编译时的常量,readonly是实例创建后(运行时)的常量
对任何const的常量修改后,都要对整个项目进行重新编译,而对readonly的计算方式修改后,只需要重新编译该类库即可


class和struct的区别

struct是值类型,它的相关结构均继承于System.ValueType类,它本身存储了值,而不包含指向值的指针
class是引用类型,它继承于System.Object类,它本身不包含值,只存储指向值的指针

如果类型只表示数据的时候,可以考虑使用struct,相比class,它具有更高的效率


string和StringBuilder的区别

string是值类型,其长度和内容是不可变的,任何对string变量的操作,都相当于创建新的对象
StringBuilder是可变的字符串动态操作类

StringBuilder在执行字符串操作时的效率是string的几百倍,因此,日常开发中应尽量使用StringBuilder而非string



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值