避免这样使用C#属性

在Office Word开发里,使用Bookmark类的Range属性时,每次访问该属性都会返回新的Range对象,如rng!= bm.Range。若不了解此特性,操作rng会让调用者误以为bm.Range也改变。设计类时应避免此类用法,以免造成困惑。

在进行Office Word开发时发现这样一个问题,
Bookmark类有一个属性Range,使用它时发现
object objName = "test";
Word.BookMark bm = ThisDocument.Bookmarks.get_Item(ref objName);
Range rng = bm.Range;
接下来你也许会认为rng == bm.Range;但是实际上
rng != bm.Range.

猜测原因:每次访问bm.Range这个属性时,他都会返回一个新的Range对象。

Word里面这样处理是由Bookmark这个对象的特殊性决定的,我们不能说这样处理不好。

但是如果我们的类里面这样使用属性,就会出现一些潜在的问题。

如果我们有下面的代码:
rng.Start = 3;
如果不了解Bookmark的这个特性,我们也许会理所当然地认为bm.Range.Start == 3,而实际上则不是。
如果我们在设计类时,我认为应该尽量避免这样使用,这样设计的类在公开给别人使用时,会给调用者造成困惑。

转载于:https://www.cnblogs.com/mist/archive/2005/03/16/119704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值