数组下标是字符串的实现

using System;

namespace Oceansoft.LOGERP.MessageClient.MessageHeadAffirm
{
    
/// <summary>
    
///  报文头的形成  
    
///  作者:贾海天
    
/// </summary>
    
public class MessageHead
    {
        
//相关数组中存储项目的数组
        protected object
[] _items;
        
//数组中的项目数
        protected 
int _count=0;
        
public int Length
        {
            get
            {
                
return _count;
            }            
        }
        
public object this[string key]
        {
            get
            {
                
return KeyToObject(key);
            }
            
set
            {
                AddToArray(
key,value);
            }
        }
        protected bool KeyExists(string 
key)
        {
            
for (int n=0;n<_count;n++)
            {
                KeyItemPair pair
=(KeyItemPair)_items[n];
                
if (pair.key==key)
                {
                    
return true;
                }
            }
            
return false;
        }
        protected void AddToArray(string 
key,object item)
        {
            
if (!KeyExists(key))
            {
                _items
[_count]=new KeyItemPair(key,item);
                _
count++;
            }            
        }
        protected object KeyToObject(string 
key)
        {
            
for (int n=0;n<_count;++n)
            {
                KeyItemPair pair
=(KeyItemPair)_items[n];
                
if (pair.key==key)
                {
                    
return pair.item; 
                }
            }
            
return null;
        }
        
public MessageHead(int MessageHead_Length)
        {
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
            _items
=new object[MessageHead_Length];
        }
        protected struct KeyItemPair
        {
            
public object item;
            
public string key;
            
public KeyItemPair(string k,object obj)
            {
                
key=k;
                item
=obj;
            }
        }
    }
}
使用方法(方法不是很完整,可以继续扩展):
MessageHead MH=new MessageHead(3);
MH
["Confirm_NO"]="aaa";
MH
["IO_Seq"]="bbb";
MH
["Gross_Pack_NO"]="ccc";

注意:
Struct 的实现是在栈里面实现的
Class   实现是在托管堆里面实现的
Class里面的方法是在托管堆里面的方法表里面保存的.



此方法也可以用 Hashtable 来实现,具体实现将在以后进行研究
posted @ 2005-10-25 16:45  jhtchina  阅读(1368)  评论(0编辑  收藏  举报