Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Client.Engine
- {
- /// <summary>
- /// Класс, описывающий переменную
- /// </summary>
- [Serializable]
- class Variable: IEquatable<Variable>, IComparable
- {
- private static uint _counter;
- public uint ID { get; set; }
- public string Name { get; set; }
- public Variable()
- {
- ID = _counter++;
- }
- public Variable(string name)
- {
- ID = _counter++;
- Name = name;
- }
- /// <summary>
- /// Конструктор с параметрами
- /// </summary>
- /// <param name="id">ID переменной. Переменные с одинаковыми ID считаются одинаковыми</param>
- /// <param name="name">Название переменной</param>
- public Variable(uint id, string name = "")
- {
- ID = id;
- Name = name;
- }
- static Variable()
- {
- _counter = 0;
- }
- public override bool Equals(object obj)
- {
- if (obj.GetType() != GetType()) return false;
- return Equals((Variable) obj);
- }
- public bool Equals(Variable obj)
- {
- return ID == obj.ID;
- }
- bool IEquatable<Variable>.Equals(Variable other)
- {
- return Equals(other);
- }
- public override int GetHashCode()
- {
- //Сформированная проверка хеша
- unchecked
- {
- return ((int)ID * 397) ^ (Name != null ? Name.GetHashCode() : 0);
- }
- }
- public override string ToString()
- {
- return ID.ToString("D") + ": " + Name;
- }
- public int CompareTo(object obj)
- {
- if (GetType() != obj.GetType())
- return -1;
- return CompareTo(obj as Variable);
- }
- public int CompareTo(Variable obj)
- {
- if (ID < obj.ID)
- return -1;
- if (ID == obj.ID)
- return 0;
- return 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment