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

来源:互联网 发布:数据库第四版课后答案 编辑:程序博客网 时间:2024/06/15 17:14


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