Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Hashtable


Автор: logicStar 21.8.2011, 18:10
Задача, поместить структуру в хеш и потом обращаться к ее полям через значение хеш.
Проблема в том что не могу обратится к полям структуры. Вот пример кода:
Код

 public Hashtable hash= new Hashtable();
struct _mesage 
        {
          public  string content;
          public  int number;
          public  bool epty;
        }
_mesage mesage ;
            mesage.content = "";
            mesage.epty = true;
            mesage.number = 0;
            hash.Add("сообщение0", mesage);

foreach (DictionaryEntry element in hash)
            {
                if (hash.Value.number > maxNunber)// тут надо обратиться к полю number структуры, но при выполнении кода вылетает ошибка
                {
                 
                }
            }

Автор: Ky7m 21.8.2011, 19:39
Цитата(logicStar @ 21.8.2011,  18:10)
Задача, поместить структуру в хеш и потом обращаться к ее полям через значение хеш.
Проблема в том что не могу обратится к полям структуры.

Наверно закралась ошибка в том, что надо обратится не к hash.Value.number, а к element. Ну это если правильно понял вашу логику.

Автор: logicStar 21.8.2011, 19:54
Да, конечно, обращение через element. 
Код

foreach (DictionaryEntry element in hash)
            {
                if (element .Value.number > maxNunber)// тут надо обратиться к полю number структуры, но при выполнении кода вылетает ошибка
                {
                 
                }
            }

Автор: Voyager 23.8.2011, 10:45
А какая ошибка? Наверняка там все написано, про приведение типов и т.д. Попробуйте перевести онлайн-переводчиком, помогает!

Автор: VirusUZ 25.8.2011, 15:11
Готовый Алгоритм есть

Код

using System;
using System.Collections;
using conf.App_Code.Domain;
using conf.App_Code.Utils;
namespace conf.App_Code.Rpc {
    public class Chat : Users {
        Users user;
        public Chat( Users user ) { this.user = user; }
        int chatID = 0;
        int statusID;
        string fileName;
        public string FileName {
            get { return fileName; }
            set { fileName = value; }
            }
        public int ChatID {
            get { return chatID; }
            set { chatID = value; }
            }
        public int StatusID {
            get { return statusID; }
            set { statusID = value; }
            }
       [color=red] Hashtable h = new Hashtable();[/color]
        //Hashtable dat = new Hashtable();
        string registr = "";
        public void reg() {
            chatID = user.Id;
            //try
                {
                h.Add("" + user.Id, "Connect...");
                }
            //catch { h[di] = "1"; }
            }
        public void send(string uid, string message ) {
            if (registr.Contains("" + uid + ",")) {
                h[uid] = "" + h[uid] + "\n" + message;
                //dat[uid] = "" + dat[uid] + "\n" + DateTime.Now;
                } else {
                registr += "" + uid + ",";
                try {
                    h.Add(uid, message);
                    //dat.Add(uid, DateTime.Now);
                    } catch {
                    h[uid] = "" + h[uid] + "\n" + message;
                    //dat[uid] = "" + dat[uid] + "\n" + DateTime.Now;
                    }
                }
            }
        public string[] receive() {
            foreach (string s in registr.Split(',')) {
                string temp = "" + h[s];
                //string vaqt = "" + dat[s];
                registr.Replace(s + ',', "");
                h.Remove(s);
                //dat.Remove(s);
                return new string[] { s, temp };
                //                return new string[] { s, temp, vaqt };
                }
            return null;
            }
        public ArrayList getChatListOnLine(string endDate) {
            return ChatAdapter.getListOnLine(user.Id, endDate);
            }
        public ArrayList getChatList( ) {
            return ChatAdapter.getList(user.Id);
            }
        public class ChatList : MarshalByRefObject {
            int uid;
            public int Uid {
                get { return uid; }
                set { uid = value; }
                }
            int depId;
            public int DepId {
                get { return depId; }
                set { depId = value; }
                }
            string dep_uname;
            public string Dep_uname {
                get { return dep_uname; }
                set { dep_uname = value; }
                }
            string dep_rname;
            public string Dep_rname {
                get { return dep_rname; }
                set { dep_rname = value; }
                }
            string dep_ename;
            public string Dep_ename {
                get { return dep_ename; }
                set { dep_ename = value; }
                }
            string userName;
            public string UserName {
                get { return userName; }
                set { userName = value; }
                }
            string endDate;
            public string EndDate {
                get { return endDate; }
                set { endDate = value; }
                }
            public ChatList() { }
            public ChatList( object[] obj ) {
                if (obj != null) {
                    Get g = new Get(obj);
                    depId = g.getInt32();
                    uid = g.getInt32();
                    dep_uname = g.getString();
                    dep_rname = g.getString();
                    dep_ename = g.getString();
                    userName = g.getString();
                    endDate = g.getString();
                    }
                }
            public ArrayList Convertor( ArrayList ar ) {
                int i = -1, n = ar.Count;
                while (++i < n) {
                    ar[i] = new ChatList((object[])ar[i]);
                    }
                return ar;
                }
            }
        }
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)