65.9K
CodeProject 正在变化。 阅读更多。
Home

转换为 TryParse

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.68/5 (14投票s)

2008年6月17日

CPOL

3分钟阅读

viewsIcon

32450

使用 TryParse 而不是 Convert 的优势 -一个短故事

引言

假设你被分配到一个项目,创建一个非常酷的应用程序,用于获取用户的姓名、年龄和出生日期,并将所有数据保存到数据库。 好耶!

所以你继续设计一个很酷的表单,包括两个文本框来获取姓名和年龄,并添加一个日期选择器控件来选择出生日期。 棒极了!

现在到了困难的部分 - 将值保存到数据库。 数据库管理员们在这方面确实做得过分了,设计了一个可以保存所有此类信息的表,就像这样

CREATE TABLE Users
(Name VARCHAR(50), Age INT(3), DateOfBirth DATETIME)

哦,这些邪恶的人! 你恐惧地颤抖,因为你的控件只公开了一个文本属性,并将值作为文本返回。 当然,数据库管理员们本来可以考虑到这一点进行设计的。 但是他们在你不完全理解(或控制)的不同世界中工作,所以你不情愿地查看你可以做些什么来将你的 string 值转换为表期望的类型。

熬夜之后,你想出了一个这样的解决方案

private void saveUser()
{
    try{

        string name = txtName.Text;
        int age = Convert.ToInt32(txtAge.Text);
        DateTime dateOfBirth = Convert.ToDateTime(txtDateTime.Text);

        // Code to save to the database

    }
    catch(System.Exception ex){
        // Code to do something with the error
    }
}

很好,所以你成功地将值转换为数据库所需的类型,并且你加入了 try-catch 块来处理代码中发生的任何错误。 你认为你几乎完成了,所以你叫来了上周加入你的团队的大学毕业生,来炫耀你的杰作。 他看了一眼,竟然敢提到客户端的验证控件,这样如果数据无效,你就可以节省服务器往返。

你向他投去几道匕首般的目光,并放入一些验证器控件,以便可以在客户端验证数据。 当你将代码推送给你的经理进行一些审查和反馈时,你可以听到鼓声、号角声,同时你出门庆祝。 肯定,他会印象深刻的。

第二天,你的收件箱收到一封来自你经理的只有一行的神秘邮件:“不起作用,JS 已禁用。” 现在你有两个头痛的问题 - 宿醉和邮件。 你需要迅速采取行动!

所以你去找你那擅长修复代码问题的极客朋友。 “伙计”,你说,“你能看看这段代码吗,我认为我没有处理验证控件的 OnServerValidate 事件”。 当他盯着你的代码时,你出去找点东西来缓解宿醉。

当你回来时,你的极客大神已经像这样更改了你的代码

private void saveUser()
{
    try{
        string name; int age; DateTime dateOfBirth;

        if(!String.IsNullOrEmpty(txtName.Text) 
            && int.TryParse(txtAge.Text, out age) 
            && DateTime.TryParse(txtDateOfBirth.Text, out dateOfBirth))
        {
            // Code to save to the database
        }
        else
        {
            // Show validation error
        }
    }
    catch(System.Exception ex){
        // Code to do something with the error
    }
}

你大声呻吟! 你让他处理每个控件的 OnServerValidate 事件,但他只写了几行你不理解的代码,你可以感觉到你的头痛又开始了。 你想问问他,但又碍于面子。 此外,你总是可以在Google 上查找了解它是什么,以及这样做是否有任何性能优势

所以,你决定让代码保持原样 - 如果对极客来说足够好,那么对你的经理来说也应该足够好。 所以你向你的经理发了一封同样神秘的回复邮件:“请审查并评论”,然后离开了办公室 - 是时候睡觉了。

当你第三天上班时,你首先注意到的是,那个刚毕业的大学生现在是一个睁大眼睛的刚毕业的大学生,你第二件注意到的是你的收件箱中没有收到来自你经理的邮件(没有消息就是好消息),最后你意识到你的应用程序已经无错误地发布了 - 摸摸木头。

一个新的项目? 来吧,你说,生活是美好的。

历史

  • 2008 年 6 月 17 日:初始发布
© . All rights reserved.