程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#箴言之用屬性來訪問類的私有成員(3)

C#箴言之用屬性來訪問類的私有成員(3)

編輯:關於C語言

如果按照如上所寫,那麼class2對象可以通過Class1.Data屬性訪問和修改局部成員 myClass1某些值,這樣就可以修改了myClass2的私有成員myClass1的值,即會產生潛在錯 誤。

例如:

class1 myClass1 = myClass2.Class1;
myClass1.Data = "test2";

如何避免這類錯誤呢,那麼首先需要修改Class1屬性的編寫,其次在class1類需要提 供Clone函數或者其他copy函數,具體如下:

public class class1:ICloneable
{
 string _data;
 public class1( string data )
 {
  _data = data;
 }
 public string Data
 {
  get{ return _data;}
  set{ _data = value;}
 }
 #region ICloneable Members
 public object Clone()
 {
  // TODO: Add class1.Clone implementation
  return new class1( _data );
 }
 #endregion
}
public class class2
{
 private class1 myClass1 = null;
 public class1 Class1
 {
  get{ return myClass1.Clone() as class1; }
 }
 public string Data
 {
  get{ return myClass1.Data;}
 }
 public class2( string data )
 {
  myClass1 = new class1( data );
 }
}

第二個需要注意的是編寫屬性set部分的時候,這裡需要對參數進行有效性檢查。因為 屬性是外界修改類的私有成員的入口,為了避免因為私有成員不正確而產生的錯誤,所以 在進行屬性set的時候要進行有效性檢查,從而保證私有成員對於整個類來說是有效的。

那麼在實際應用當中,與屬性密切相關的就是實現兩個窗體之間數據訪問,這可能是 寫WinForm程序最基本的。不過很遺憾的是,網上在回答此類問題的時候,很多人都建議 用第一種方法來解決。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved