Esempio n. 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);
        }