Microsoft.JScript.ArrayConstructor.CreateInstance C# (CSharp) Method

CreateInstance() private method

private CreateInstance ( ) : ArrayObject
return ArrayObject
      public new ArrayObject CreateInstance(params Object[] args){
        ArrayObject arrayObj = new ArrayObject(this.originalPrototype, typeof(ArrayObject));
        if (args.Length != 0){
          if (args.Length == 1){
            Object arg0 = args[0];
            IConvertible ic = Convert.GetIConvertible(arg0);
            switch (Convert.GetTypeCode(arg0, ic)){
              case TypeCode.Char: 
              case TypeCode.SByte: 
              case TypeCode.Byte:
              case TypeCode.Int16: 
              case TypeCode.UInt16:
              case TypeCode.Int32:
              case TypeCode.UInt32:
              case TypeCode.Int64:
              case TypeCode.UInt64:
              case TypeCode.Single:
              case TypeCode.Double:
              case TypeCode.Decimal:
                double d = Convert.ToNumber(arg0, ic);
                uint len = Convert.ToUint32(arg0, ic);
                if (d != (double)len)
                  throw new JScriptException(JSError.ArrayLengthConstructIncorrect);
                arrayObj.length = len;
                return arrayObj;
            }
          }
          if (args.Length == 1 && args[0] is Array){
            Array array = (Array)args[0];
            if (array.Rank != 1)
              throw new JScriptException(JSError.TypeMismatch);
            arrayObj.length = array.Length;
            for (int i = 0; i < array.Length; i++)
              arrayObj.SetValueAtIndex((uint)i, array.GetValue(i));
          } else {
            arrayObj.length = args.Length;
            for (int i = 0; i < args.Length; i++)
              arrayObj.SetValueAtIndex((uint)i, args[i]);
          }
        }
        return arrayObj;
      }