Example #1
0
        protected Array _ChangeTypeOfArray(Array arrayVar, Type dtype)
        {
            Array newValues = null;

            switch (Type.GetTypeCode(dtype))
            {
            case TypeCode.Double:
            {
                newValues = new double[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToDouble(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Single:
            {
                newValues = new float[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToSingle(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Decimal:
            {
                newValues = new Decimal[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToDecimal(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Int32:
            {
                newValues = new int[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToInt32(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Int64:
            {
                newValues = new Int64[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToInt64(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Object:
            {
                if (dtype == typeof(System.Numerics.Complex))
                {
                    newValues = new System.Numerics.Complex[arrayVar.Length];
                    for (int idx = 0; idx < arrayVar.Length; idx++)
                    {
                        newValues.SetValue(new System.Numerics.Complex((double)arrayVar.GetValue(idx), 0), idx);
                    }
                    break;
                }
                else if (dtype == typeof(System.Numerics.Quaternion))
                {
                    newValues = new System.Numerics.Quaternion[arrayVar.Length];
                    for (int idx = 0; idx < arrayVar.Length; idx++)
                    {
                        newValues.SetValue(new System.Numerics.Quaternion(new System.Numerics.Vector3(0, 0, 0), (float)arrayVar.GetValue(idx)), idx);
                    }
                    break;
                }
                else
                {
                    newValues = new object[arrayVar.Length];
                    for (int idx = 0; idx < arrayVar.Length; idx++)
                    {
                        newValues.SetValue(arrayVar.GetValue(idx), idx);
                    }
                    break;
                }
            }

            default:
            {
                break;
            }
            }

            return(newValues);
        }
Example #2
0
        protected Array _ChangeTypeOfArray(Array arrayVar, Type dtype)
        {
            if (dtype == arrayVar.GetType().GetElementType())
            {
                return(arrayVar);
            }

            _DType = dtype;
            Array newValues = null;

            switch (Type.GetTypeCode(dtype))
            {
            case TypeCode.Double:
            {
                newValues = new double[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToDouble(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Single:
            {
                newValues = new float[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToSingle(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Decimal:
            {
                newValues = new Decimal[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToDecimal(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Int32:
            {
                newValues = new int[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToInt32(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.UInt32:
            {
                newValues = new uint[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToUInt32(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Int64:
            {
                newValues = new long[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToInt64(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.UInt64:
            {
                newValues = new ulong[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToUInt64(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Int16:
            {
                newValues = new short[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToInt16(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.UInt16:
            {
                newValues = new ushort[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToUInt16(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.Byte:
            {
                newValues = new byte[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToByte(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            case TypeCode.SByte:
            {
                newValues = new sbyte[arrayVar.Length];
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ToSByte(arrayVar.GetValue(idx)), idx);
                }
                break;
            }

            default:
                if (dtype == typeof(System.Numerics.Complex))
                {
                    newValues = new System.Numerics.Complex[arrayVar.Length];
                    for (int idx = 0; idx < arrayVar.Length; idx++)
                    {
                        newValues.SetValue(new System.Numerics.Complex((double)arrayVar.GetValue(idx), 0), idx);
                    }
                    break;
                }

                /*else if ( dtype == typeof(System.Numerics.Quaternion) )
                 * {
                 *  newValues = new System.Numerics.Quaternion[arrayVar.Length];
                 *  for(int idx = 0;idx < arrayVar.Length;idx++)
                 *      newValues.SetValue(new System.Numerics.Quaternion(new System.Numerics.Vector3(0,0,0) , (float)arrayVar.GetValue(idx)),idx);
                 *  break;
                 * }*/

                //fallback
                newValues = Array.CreateInstance(dtype, arrayVar.Length);
                for (int idx = 0; idx < arrayVar.Length; idx++)
                {
                    newValues.SetValue(Convert.ChangeType(arrayVar.GetValue(idx), dtype), idx);
                }
                break;
            }

            return(newValues);
        }