Inheritance: ICloneable
Example #1
0
        public static bool operator ==(Quantity arg1, Quantity arg2)
        {
            bool isEqual = ((object)arg1) == ((object)arg2);

            if (!isEqual)
            {
                StandardUnit unit1 = ((object)arg1) == null ? new StandardUnit() : arg1.Unit;
                StandardUnit unit2 = ((object)arg2) == null ? new StandardUnit() : arg2.Unit;
                if (((object)arg1) != null)
                {
                    double value1 = arg1.Value;
                    if (((object)arg2) != null)
                    {
                        double value2 = arg2.Value;

                        if (unit1 != null && unit1.HasPrefix())
                        {
                            value1 *= StandardPrefixes.Multiplier(unit1.Prefix);
                        }
                        if (unit2 != null && unit2.HasPrefix())
                        {
                            value2 *= StandardPrefixes.Multiplier(unit2.Prefix);
                        }

                        isEqual = value1.Equals(value2);
                    }
                }
            }
            return(isEqual);
        }
Example #2
0
        private void InitQuantity(string value, out string remainder)
        {
            var    number   = new StringBuilder();
            var    unit     = new StringBuilder();
            string nextWord = Physical.NextWord(value, out remainder).Trim();

            if (!double.TryParse(nextWord, out _value))
            {
                foreach (char c in nextWord)
                {
                    if (Char.IsNumber(c) || c == PLUS[0] || c == MINUS[0] || c == DECIMAL[0])
                    {
                        number.Append(c);
                    }
                    else
                    {
                        unit.Append(c);
                    }
                }
                double.TryParse(number.ToString(), out _value);
            }
            else
            {
                unit.Append(Physical.NextWord(remainder, out remainder));
            }

            _unit = new StandardUnit(unit.ToString());
            _unit.ValueChanged += _unit_ValueChanged;
        }
Example #3
0
        public static Quantity operator -(Quantity arg1, Quantity arg2)
        {
            StandardUnit unit1 = arg1.Unit;
            StandardUnit unit2 = arg2.Unit;

            if (unit1 == null && unit2 != null)
            {
                unit1 = unit2.Clone() as StandardUnit;
            }
            string prefix1 = unit1 == null ? "" : unit1.Prefix;
            string prefix2 = unit2 == null ? "" : unit2.Prefix;
            double value1  = arg1.Value;
            double value2  = arg2.Value;

            if (prefix1 != null)
            {
                value1 *= StandardPrefixes.Multiplier(prefix1);
            }
            if (prefix2 != null)
            {
                value2 *= StandardPrefixes.Multiplier(prefix2);
            }

            double value = value1 - value2;

            if (prefix1 != null)
            {
                value /= StandardPrefixes.Multiplier(prefix1);
            }
            var q = new Quantity(Convert.ToDecimal(value));

            if (unit1 != null)
            {
                q.Unit = unit1.Clone() as StandardUnit;
            }
            return(q);
        }
Example #4
0
 public object Clone()
 {
     var clone = new StandardUnit(Prefix, Unit);
     return clone;
 }
Example #5
0
        private void InitQuantity(string value, out string remainder)
        {
            var number = new StringBuilder();
            var unit = new StringBuilder();
            string nextWord = Physical.NextWord(value, out remainder).Trim();
            if (!double.TryParse(nextWord, out _value))
            {
                foreach (char c in nextWord)
                {
                    if (Char.IsNumber(c) || c == PLUS[0] || c == MINUS[0] || c == DECIMAL[0])
                        number.Append(c);
                    else
                        unit.Append(c);
                }
                double.TryParse(number.ToString(), out _value);
            }
            else
            {
                unit.Append(Physical.NextWord(remainder, out remainder));
            }

            _unit = new StandardUnit(unit.ToString());
            _unit.ValueChanged += _unit_ValueChanged;
        }
Example #6
0
        public object Clone()
        {
            var clone = new StandardUnit(Prefix, Unit);

            return(clone);
        }