c# tcbs之外部類成員型別為內部類之示例

wisdomone1發表於2012-04-20
tcbs程式碼實現:

///
    /// 資料訪問管理器
    ///
    public class DataAccessManager : IDisposable
    {
        #region
        ///
        /// 
        ///
        //DataStoreCollection 為內部類
        private DataStoreCollection _activeDataStores = new DataStoreCollection();
        
        internal class DataStoreCollection : DictionaryBase
        {
            ///
            /// 新增dataStore方法
            /// key:DataStoreNbr
            /// value:dataStore引用
            ///
            ///
            public void Add(DataStoreBase dataStore)
            {
                try
                {
                    base.Dictionary.Add(dataStore.DataStoreNbr, dataStore);
                }
                catch
                {
                }
            }

            ///
            /// 按照dataStoreNbr判斷是否包含指定dataStore引用
            ///
            ///
            ///
            public bool Contains(long dataStoreNbr)
            {
                return base.Dictionary.Contains(dataStoreNbr);
            }

            ///
            /// 按照DataStoreNbr移除dataStore
            ///
            /// dataStore
            public void Remove(DataStoreBase dataStore)
            {
                if (dataStore != null)
                {
                    base.Dictionary.Remove(dataStore.DataStoreNbr);
                }
            }

            ///
            /// 按照DataStoreNbr移除dataStore
            ///
            /// dataStoreNbr
            public void Remove(long dataStoreNbr)
            {
                base.Dictionary.Remove(dataStoreNbr);
            }

            ///
            /// 索引器
            ///
            ///
            ///
            public DataStoreBase this[long dataStoreNbr]
            {
                get
                {
                    return (DataStoreBase)base.Dictionary[dataStoreNbr];
                }
            }
        }


自己測試如下:
 
using System;
using System.Collections.Generic;
using System.Text;

namespace testhasharrayds
{
    public class outerrefinter
    {
        //外部類成員的型別可以是其內部類的型別,在此為內部類zxy,這樣就可以從外部類訪問內部類相關資訊了
        public zxy Out
        {
            get
            {
                //這是兩種方式,一是透過引用變數,二是透過直接生成物件
                //zxy z1 = new zxy("翟勳楊","陝西");
                //return z1;
                
                //屬性一般與欄位關聯,在此屬性直接與內部類關聯起來,而且屬性也可以與方法關聯,屬性是個很靈活的機制
                return new zxy("翟勳楊", "陝西");
            }
        }
        public class zxy //因為要在客戶端程式碼訪問此內部類zxy,它的訪問修飾符定義為public
        {
            string name = string.Empty;
            string addr = string.Empty;
            public  zxy(string _name,string _addr)
            {
                name = _name;
                addr = _addr;
            }
            public string Name
            {
                get
                {
                 return name;
                }
            }
            public string Addr
            {
                get
                {
                    return addr;
                }
            }
        }
    }
}

客戶端呼叫
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace testhasharrayds
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
                outerrefinter nlytest = new outerrefinter();
                //透過外部類outerrefinter
                label3.Text = onlytest.Out.Name;
                label4.Text = onlytest.Out.Addr;
           

        }
    }
}



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-721815/,如需轉載,請註明出處,否則將追究法律責任。

相關文章