避免这样使用C#属性
在进行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,而实际上则不是。
如果我们在设计类时,我认为应该尽量避免这样使用,这样设计的类在公开给别人使用时,会给调用者造成困惑。