实体和实体的集合

该博客主要展示了OrderInfo实体类及其集合类OrderInfoCollection的实现代码。OrderInfo类包含实体结构体、私有变量、构造函数、属性等,实现了IEditableObject和IDataErrorInfo接口;OrderInfoCollection类继承自CollectionBase并实现了IBindingList接口,提供了添加、删除、查找等操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天在研究实体和实体的集合的写法,基本上完成了数据绑定,但是还是没有完全完成

  1None.gifusing System;
  2None.gifusing System.Collections;
  3None.gifusing System.ComponentModel;
  4None.gif
  5None.gifnamespace Entity
  6ExpandedBlockStart.gifContractedBlock.gifdot.gif{
  7ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
  8InBlock.gif    /// 类OrderInfo的集合
  9ExpandedSubBlockEnd.gif    /// </summary>

 10InBlock.gif    public class OrderInfoCollection : CollectionBase,IBindingList
 11ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 12ExpandedSubBlockStart.gifContractedSubBlock.gif        CollectionBase实现#region CollectionBase实现
 13InBlock.gif
 14InBlock.gif        public OrderInfoCollection() 
 15ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 16ExpandedSubBlockEnd.gif        }

 17InBlock.gif
 18InBlock.gif        public OrderInfoCollection(OrderInfo[] value)
 19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 20InBlock.gif            this.AddRange(value);
 21ExpandedSubBlockEnd.gif        }

 22InBlock.gif                
 23InBlock.gif        public OrderInfo this[int index] 
 24ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 25ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{return ((OrderInfo)(this.List[index]));}
 26ExpandedSubBlockStart.gifContractedSubBlock.gif            setdot.gif{List[index] = value;}
 27ExpandedSubBlockEnd.gif        }

 28InBlock.gif
 29InBlock.gif        public int Add(OrderInfo value) 
 30ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 31InBlock.gif            return this.List.Add(value);
 32ExpandedSubBlockEnd.gif        }

 33InBlock.gif
 34InBlock.gif        public OrderInfo AddNew() 
 35ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 36InBlock.gif            return (OrderInfo)((IBindingList)this).AddNew();
 37ExpandedSubBlockEnd.gif        }

 38InBlock.gif
 39InBlock.gif        object IBindingList.AddNew()
 40ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 41InBlock.gif            OrderInfo c = new OrderInfo();
 42InBlock.gif            List.Add(c);
 43InBlock.gif            return c;
 44ExpandedSubBlockEnd.gif        }

 45InBlock.gif
 46InBlock.gif        public void AddRange(OrderInfo[] value) 
 47ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 48InBlock.gif            for (int i = 0;    (i < value.Length); i = (i + 1)) 
 49ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 50InBlock.gif                this.Add(value[i]);
 51ExpandedSubBlockEnd.gif            }

 52ExpandedSubBlockEnd.gif        }

 53InBlock.gif
 54InBlock.gif        public void AddRange(OrderInfoCollection value) 
 55ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 56InBlock.gif            for (int i = 0;    (i < value.Count); i = (i +    1))    
 57ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 58InBlock.gif                this.Add((OrderInfo)value.List[i]);
 59ExpandedSubBlockEnd.gif            }

 60ExpandedSubBlockEnd.gif        }

 61InBlock.gif
 62InBlock.gif        public bool Contains(OrderInfo value) 
 63ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 64InBlock.gif            return this.List.Contains(value);
 65ExpandedSubBlockEnd.gif        }

 66InBlock.gif
 67InBlock.gif        public void CopyTo(OrderInfo[] array, int index) 
 68ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 69InBlock.gif            this.List.CopyTo(array, index);
 70ExpandedSubBlockEnd.gif        }

 71InBlock.gif
 72InBlock.gif        public int IndexOf(OrderInfo value) 
 73ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 74InBlock.gif            return this.List.IndexOf(value);
 75ExpandedSubBlockEnd.gif        }

 76InBlock.gif
 77InBlock.gif        public void Insert(int index, OrderInfo value)    
 78ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 79InBlock.gif            List.Insert(index, value);
 80ExpandedSubBlockEnd.gif        }

 81InBlock.gif
 82InBlock.gif        public void Remove(OrderInfo value) 
 83ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 84InBlock.gif            List.Remove(value);
 85ExpandedSubBlockEnd.gif        }

 86InBlock.gif
 87InBlock.gif        public new OrderInfoCollectionEnumerator GetEnumerator()    
 88ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 89InBlock.gif            return new OrderInfoCollectionEnumerator(this);
 90ExpandedSubBlockEnd.gif        }

 91InBlock.gif
 92ExpandedSubBlockEnd.gif        #endregion

 93InBlock.gif
 94InBlock.gif
 95ExpandedSubBlockStart.gifContractedSubBlock.gif        OrderInfoCollectionEnumerator 实现#region OrderInfoCollectionEnumerator 实现
 96InBlock.gif
 97InBlock.gif        public class OrderInfoCollectionEnumerator : IEnumerator    
 98ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 99InBlock.gif            private    IEnumerator _enumerator;
100InBlock.gif            private    IEnumerable _temp;
101InBlock.gif            
102InBlock.gif            public OrderInfoCollectionEnumerator(OrderInfoCollection mappings)
103ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
104InBlock.gif                _temp =    ((IEnumerable)(mappings));
105InBlock.gif                _enumerator = _temp.GetEnumerator();
106ExpandedSubBlockEnd.gif            }

107InBlock.gif            
108InBlock.gif            public OrderInfo Current
109ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
110ExpandedSubBlockStart.gifContractedSubBlock.gif                get dot.gif{return ((OrderInfo)(_enumerator.Current));}
111ExpandedSubBlockEnd.gif            }

112InBlock.gif            
113InBlock.gif            object IEnumerator.Current
114ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
115ExpandedSubBlockStart.gifContractedSubBlock.gif                get dot.gif{return _enumerator.Current;}
116ExpandedSubBlockEnd.gif            }

117InBlock.gif            
118InBlock.gif            public bool MoveNext()
119ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
120InBlock.gif                return _enumerator.MoveNext();
121ExpandedSubBlockEnd.gif            }

122InBlock.gif            
123InBlock.gif            bool IEnumerator.MoveNext()
124ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
125InBlock.gif                return _enumerator.MoveNext();
126ExpandedSubBlockEnd.gif            }

127InBlock.gif            
128InBlock.gif            public void Reset()
129ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
130InBlock.gif                _enumerator.Reset();
131ExpandedSubBlockEnd.gif            }

132InBlock.gif            
133InBlock.gif            void IEnumerator.Reset() 
134ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
135InBlock.gif                _enumerator.Reset();
136ExpandedSubBlockEnd.gif            }

137ExpandedSubBlockEnd.gif        }

138ExpandedSubBlockEnd.gif        #endregion
 
139InBlock.gif
140InBlock.gif
141ExpandedSubBlockStart.gifContractedSubBlock.gif        IBindingList 成员#region IBindingList 成员
142InBlock.gif
143InBlock.gif        private ListChangedEventArgs resetEvent = new ListChangedEventArgs(ListChangedType.Reset, -1);
144InBlock.gif        private ListChangedEventHandler onListChanged;
145InBlock.gif
146InBlock.gif        public bool AllowEdit 
147ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
148ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return true;}
149ExpandedSubBlockEnd.gif        }

150InBlock.gif
151InBlock.gif        public bool AllowNew 
152ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
153ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return true;}
154ExpandedSubBlockEnd.gif        }

155InBlock.gif
156InBlock.gif        public bool AllowRemove 
157ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
158ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return true;}
159ExpandedSubBlockEnd.gif        }

160InBlock.gif
161InBlock.gif        public bool SupportsChangeNotification 
162ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
163ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return true;}
164ExpandedSubBlockEnd.gif        }

165InBlock.gif
166InBlock.gif        public bool SupportsSearching 
167ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
168ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return false;}
169ExpandedSubBlockEnd.gif        }

170InBlock.gif
171InBlock.gif        public bool SupportsSorting
172ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
173ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gif{return false;}
174ExpandedSubBlockEnd.gif        }

175InBlock.gif
176InBlock.gif        public void AddIndex(PropertyDescriptor property)
177ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
178InBlock.gif            throw new NotSupportedException();
179ExpandedSubBlockEnd.gif        }

180InBlock.gif        public void ApplySort(PropertyDescriptor property, System.ComponentModel.ListSortDirection direction)
181ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
182InBlock.gif            throw new NotSupportedException();
183ExpandedSubBlockEnd.gif        }

184InBlock.gif        public PropertyDescriptor SortProperty
185ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
186ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{throw new NotSupportedException();
187InBlock.gif                //return null;
188ExpandedSubBlockEnd.gif            }

189ExpandedSubBlockEnd.gif        }

190InBlock.gif        public int Find(PropertyDescriptor property, object key)
191ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
192InBlock.gif            throw new NotSupportedException(); 
193InBlock.gif            //return 0;
194ExpandedSubBlockEnd.gif        }

195InBlock.gif        public void RemoveSort()
196ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
197InBlock.gif            throw new NotSupportedException(); 
198ExpandedSubBlockEnd.gif        }

199InBlock.gif        public void RemoveIndex(PropertyDescriptor property)
200ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
201InBlock.gif            throw new NotSupportedException(); 
202ExpandedSubBlockEnd.gif        }

203InBlock.gif        public bool IsSorted
204ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
205ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gifthrow new NotSupportedException();
206InBlock.gif            //return false;
207ExpandedSubBlockEnd.gif            }

208ExpandedSubBlockEnd.gif        }

209InBlock.gif        public System.ComponentModel.ListSortDirection SortDirection
210ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
211ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{throw new NotSupportedException();
212InBlock.gif                //return new System.ComponentModel.ListSortDirection ();
213ExpandedSubBlockEnd.gif            }

214ExpandedSubBlockEnd.gif        }

215InBlock.gif        public event ListChangedEventHandler ListChanged 
216ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
217ExpandedSubBlockStart.gifContractedSubBlock.gif            adddot.gif{onListChanged += value;}
218ExpandedSubBlockStart.gifContractedSubBlock.gif            removedot.gif{onListChanged -= value;}
219ExpandedSubBlockEnd.gif        }

220InBlock.gif
221InBlock.gif        protected virtual void OnListChanged(ListChangedEventArgs ev) 
222ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
223InBlock.gif            if (onListChanged != null
224ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
225InBlock.gif                onListChanged(this, ev);
226ExpandedSubBlockEnd.gif            }

227ExpandedSubBlockEnd.gif        }

228InBlock.gif        protected override void OnClearComplete() 
229ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
230InBlock.gif            OnListChanged(resetEvent);
231ExpandedSubBlockEnd.gif        }

232InBlock.gif        private void RemoveChild(Object source, OrderInfo.OrderInfoEventArgs e)
233ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
234InBlock.gif            List.Remove(source);
235ExpandedSubBlockEnd.gif        }

236InBlock.gif        protected override void OnInsertComplete(int index, object value) 
237ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
238InBlock.gif            ((OrderInfo)(value)).RemoveMe += new OrderInfo.OrderInfoEventHandler(RemoveChild); 
239InBlock.gif            OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
240ExpandedSubBlockEnd.gif        }

241InBlock.gif        protected override void OnRemoveComplete(int index, object value) 
242ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
243InBlock.gif            OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
244ExpandedSubBlockEnd.gif        }

245InBlock.gif        protected override void OnSetComplete(int index, object oldValue, object newValue) 
246ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
247InBlock.gif            if (oldValue != newValue) 
248ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
249InBlock.gif                OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
250ExpandedSubBlockEnd.gif            }

251ExpandedSubBlockEnd.gif        }

252InBlock.gif
253ExpandedSubBlockEnd.gif        #endregion

254ExpandedSubBlockEnd.gif    }

255ExpandedBlockEnd.gif}

上面是实体的集合,下面是实体的写法
  1None.gifusing System;
  2None.gifusing System.Data;
  3None.gifusing System.Collections;
  4None.gifusing System.ComponentModel;
  5None.gif
  6None.gifnamespace Entity
  7ExpandedBlockStart.gifContractedBlock.gifdot.gif{
  8ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
  9InBlock.gif    /// Order的描述
 10ExpandedSubBlockEnd.gif    /// </summary>

 11InBlock.gif    public class OrderInfo : IEditableObject,IDataErrorInfo
 12ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 13InBlock.gif
 14ExpandedSubBlockStart.gifContractedSubBlock.gif        实体 结构体#region 实体 结构体
 15ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 16InBlock.gif        /// 类OrderInfo的实体结构体
 17ExpandedSubBlockEnd.gif        /// </summary>

 18InBlock.gif        struct OrderInfoData
 19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 20InBlock.gif            internal string _id;
 21InBlock.gif            internal string _name;
 22ExpandedSubBlockEnd.gif        }

 23InBlock.gif
 24ExpandedSubBlockEnd.gif        #endregion

 25InBlock.gif
 26InBlock.gif
 27ExpandedSubBlockStart.gifContractedSubBlock.gif        私有变量#region 私有变量
 28InBlock.gif
 29InBlock.gif        private OrderInfoData custData;    //类实体的值
 30InBlock.gif        private OrderInfoData backupData;    //类实体的备份值(用于CancelEdit的时候的恢复)
 31InBlock.gif        private bool mEditing = false;            //是否处于编辑状态
 32InBlock.gif        private bool mIsNew = true;                //是否是新建状态
 33InBlock.gif
 34ExpandedSubBlockEnd.gif        #endregion

 35InBlock.gif
 36InBlock.gif
 37ExpandedSubBlockStart.gifContractedSubBlock.gif        构造函数#region 构造函数
 38InBlock.gif
 39ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 40InBlock.gif        /// 默认构造函数
 41ExpandedSubBlockEnd.gif        /// </summary>

 42InBlock.gif        public OrderInfo():base()
 43ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 44InBlock.gif            this.custData = new OrderInfoData();
 45InBlock.gif            this.custData._id = "";
 46InBlock.gif            this.custData._name = "";
 47ExpandedSubBlockEnd.gif        }

 48InBlock.gif
 49InBlock.gif
 50ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 51InBlock.gif        /// 构造函数,所有公开属性赋值
 52InBlock.gif        /// </summary>
 53InBlock.gif        /// <param name="m_id">属性ID的描述</param>
 54ExpandedSubBlockEnd.gif        /// <param name="m_name">属性Name的描述</param>

 55InBlock.gif        public OrderInfo(string m_id,string m_name)
 56ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 57InBlock.gif            this.custData = new OrderInfoData();
 58InBlock.gif            this.custData._id = m_id;
 59InBlock.gif            this.custData._name = m_name;
 60ExpandedSubBlockEnd.gif        }

 61InBlock.gif
 62ExpandedSubBlockEnd.gif        #endregion

 63InBlock.gif
 64InBlock.gif
 65ExpandedSubBlockStart.gifContractedSubBlock.gif        实体属性#region 实体属性
 66InBlock.gif
 67ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 68InBlock.gif        /// 属性ID的描述
 69ExpandedSubBlockEnd.gif        /// </summary>

 70InBlock.gif        public string ID
 71ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 72ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{return this.custData._id;}
 73ExpandedSubBlockStart.gifContractedSubBlock.gif            setdot.gif{this.custData._id = value;}
 74ExpandedSubBlockEnd.gif        }

 75InBlock.gif
 76ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 77InBlock.gif        /// 属性Name的描述
 78ExpandedSubBlockEnd.gif        /// </summary>

 79InBlock.gif        public string Name
 80ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 81ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{return this.custData._name;}
 82ExpandedSubBlockStart.gifContractedSubBlock.gif            setdot.gif{this.custData._name = value;}
 83ExpandedSubBlockEnd.gif        }

 84InBlock.gif
 85InBlock.gif
 86ExpandedSubBlockEnd.gif        #endregion

 87InBlock.gif
 88InBlock.gif
 89ExpandedSubBlockStart.gifContractedSubBlock.gif        IEditableObject 成员#region IEditableObject 成员
 90InBlock.gif
 91InBlock.gif        public void EndEdit()
 92ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 93InBlock.gif            if (mEditing) 
 94ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 95InBlock.gif                mEditing = false;
 96InBlock.gif                mIsNew = false;
 97ExpandedSubBlockEnd.gif            }

 98ExpandedSubBlockEnd.gif        }

 99InBlock.gif
100InBlock.gif        internal class OrderInfoEventArgs : EventArgs
101ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
102InBlock.gif            // 定义事件成员,用于提供有关事件的信息
103ExpandedSubBlockEnd.gif        }

104InBlock.gif        internal delegate void OrderInfoEventHandler(Object source, OrderInfoEventArgs e);
105InBlock.gif        internal event OrderInfoEventHandler RemoveMe;
106InBlock.gif        public void CancelEdit()
107ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
108InBlock.gif            if (mEditing) 
109ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
110InBlock.gif                mEditing = false;
111InBlock.gif                this.custData = backupData;
112InBlock.gif                if(mIsNew)
113ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
114InBlock.gif                    mIsNew = false;
115InBlock.gif                    RemoveMe(thisnew OrderInfoEventArgs());
116ExpandedSubBlockEnd.gif                }

117ExpandedSubBlockEnd.gif            }

118ExpandedSubBlockEnd.gif        }

119InBlock.gif
120InBlock.gif        public void BeginEdit()
121ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
122InBlock.gif            if (!mEditing) 
123ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
124InBlock.gif                mEditing = true;
125InBlock.gif                this.backupData = custData;
126ExpandedSubBlockEnd.gif            }

127ExpandedSubBlockEnd.gif        }

128InBlock.gif
129ExpandedSubBlockEnd.gif        #endregion

130InBlock.gif
131InBlock.gif
132ExpandedSubBlockStart.gifContractedSubBlock.gif        IDataErrorInfo 成员#region IDataErrorInfo 成员
133InBlock.gif
134InBlock.gif        public string Error
135ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
136ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{return "";}
137ExpandedSubBlockEnd.gif        }
 
138InBlock.gif
139InBlock.gif        public string this[string strErrorName]  
140ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif
141ExpandedSubBlockStart.gifContractedSubBlock.gif            getdot.gif{return "";}
142ExpandedSubBlockEnd.gif        }
 
143InBlock.gif
144ExpandedSubBlockEnd.gif        #endregion

145ExpandedSubBlockEnd.gif    }

146ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/zellzhang/archive/2005/07/11/190538.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值