posts - 45,  comments - 35,  trackbacks - 0
看源代码刚学到的,当属性的set块中还有其它调用或较复杂的操作时,不要重复设置对象的属性。道理很简单啊,还是贴段代码吧,代码演示的是怎样做是否重复的判断而不是重现上面描述的情景.
    class EntryPoint
    {
        [STAThread]
        
static void Main(string[] args)
        {
            Test test 
= new Test();
            test.Name 
= "yicone";
            test.Name 
= "yicone";
            test.Name 
= "yic";
            Console.ReadLine();
        }
    }

    
public class Test
    {
        
int i = 1;
        
public string name;
        
public string Name
        {
            
get{return name;}
            
set
            {
                
if(value == Name)
                {
                    Console.WriteLine(
"第{0}次set name属性失败!", i++);
                    Console.WriteLine(
"原因:与当前Test类的实例的Name属性值相同,不需要更改");
                    
return;
                }
                name 
= value;
                Console.WriteLine(
"第{0}次set name属性成功", i++);
            }
        }
    }

p.s. 调整了措词,以避免不必要的误会.

yicone
-The future is worth fighting for.
posted on 2005-09-11 00:38 yicone 阅读(774) 评论(5)  编辑 收藏 所属分类: C# Programming

FeedBack:
2005-09-11 19:20 | 蛙蛙池塘      
太深奥了,偶没有看懂。
  回复  引用  查看    
#2楼 [楼主]
2005-09-11 22:32 | yicone      
to 蛙蛙池塘:
可能是我没描述清楚。写blog还很少, 需要宝贵的建议改进自己的表达,先谢谢你。这段代码想体现的是在某种情况下,有必要在set中先做一下判断,以避免不必要的开销(这里假设set块中还有较复杂的后续操作)。
觉得只要建立一个控制台程序,把代码拷进去运行一下就清楚了。我是在CodeSnipper中试验的。

另外纠正两个错误:“但前”应为“当前”; "name属性"应为“Name属性", 请浏览者原谅。
  回复  引用  查看    
2005-09-12 08:39 | Ninputer      
你确定String的比较比一次引用赋值更快吗?而且这代码还有线程同步问题。
  回复  引用  查看    
2005-09-12 12:43 | yicone      
to Ninputer:
"(这里假设set块中还有较复杂的后续操作)",我并不是要真的比较string!而且不是快慢的问题. 看一下下面的代码:
public object DataSource {
get { return dataSource; }
set {
if(value == DataSource) return;
if(value != null && DataSource != null && DataSource.Equals(value)) return;
if(IsValidDataSource(value)) {
RemoveDataSetEvents();
dataSource = value;
ActivateDataSource(false);
RaiseDataSourceChanged();
}
}
}
  回复  引用  查看    
#5楼 [楼主]
2005-09-12 13:08 | yicone      
to Ninputer:
能否详细解释以下您所说的"线程同步问题", 或者推荐个link也行啊. 以后还请多多指教.
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-11-23 23:39 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 







<2005年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

与我联系

搜索

 

常用链接

留言簿

我管理的小组

随笔分类(55)

随笔档案(45)

积分与排名

  • 积分 - 18301
  • 排名 - 2234

最新评论

阅读排行榜

评论排行榜