zoukankan      html  css  js  c++  java
  • 数组下标是字符串的实现

    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 来实现,具体实现将在以后进行研究
  • 相关阅读:
    程序返回插入数据库成功,但是数据库内却没有数据
    C++ 使用动态二维数组参数
    深入理解.Net中的内存释放,以及有关的注意事项
    用数据集时,错误:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
    关于堆和栈
    C#加密方法总汇
    const与readonly
    struts 将上传文件保存到数据库中
    java Annotation注解的运用
    转:获取汉字的拼音(包括一级和二级)
  • 原文地址:https://www.cnblogs.com/jhtchina/p/261662.html
Copyright © 2011-2022 走看看