首页 > Windows开发 > 详细

C#中属性的一个容易搞错的问题

时间:2015-07-29 10:17:00      阅读:186      评论:0      收藏:0      [点我收藏+]

猜猜看以下程序的输出是什么?

技术分享using System;
技术分享
using System.Windows.Forms;
技术分享
技术分享
namespace Skyiv.Ben.Test
技术分享
{
技术分享    
sealed class MainTest
技术分享    
{
技术分享        
static void Main()
技术分享        
{
技术分享            Label lblOut 
= new Label();
技术分享            lblOut.Text 
= null;
技术分享            Console.WriteLine(
"{0} {1}", lblOut.Text == null, lblOut.Text == "");
技术分享        }

技术分享    }

技术分享}

技术分享
该程序的输出是: False True,而不是: True False。也就是说,你将一个null赋值给lblOut.Text,而lblOut.Text的值是""(即string.Empty),而不是null。lblOut.Text是一个属性,实际上,按C#语法,给属性赋值是调用它的set方法,而获取属性的值是调用它的get方法,这两者不必一致,也就是说,你给属性赋一个值,然后再读该属性的值,取到的值就有可能不是你刚刚赋给它的值了。编程时如不小心,就有可能出现BUG。我以前写程序时就出现过这样的错误:
lblOut.Text = GetAccount();
if (lblOut.Text == null) lblOut.Text = "无此账号";
结果这个if语句永远不会取真值。

版权声明:本文为博主http://www.zuiniusn.com 原创文章,未经博主允许不得转载。

C#中属性的一个容易搞错的问题

原文:http://blog.csdn.net/u013141940/article/details/47122023

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!