int[] nicht untertyp von object[]?
-
hi,
ich habe folgende methode in c#:
internal static object[] getParsedValue(Type theType, object[] value) { switch (theType.ToString()) { case "System.Int32[]": int[] returnValueInt = new int[value.Length]; for (int i = 0; i < value.Length; i++) { returnValueInt[i] = Int32.Parse(value[i].ToString()); } return returnValueInt; case "System.String": string[] returnValueString = new string[value.Length]; for (int i = 0; i < value.Length; i++) { returnValueString[i] = value[i].ToString(); } return returnValueString; default: return null; } }
Fuer den string[] case ist alles ok, fuer den int[] case kommt schon beim compilen
Cannot implicitly convert type 'int[]' to 'object[]'
warum?
-
Int, und auch int[], ist ein ValueType, daher musst du explicit sagen wie gecastet werden soll.
-
int ist ein shorthand fuer system.int32, damit also ein objekt. das kann ich in einer object return type methode einfach zurueck geben ohne zu casten. fuer int[] (= System.int32[]) geht es nicht, habe aber inzwischen auch rausbekommen, dass es mir eh nix bringt, da ich mit dem ergebnis der methode type.invokemember(..., object[] arguments) aufrufen wollte, was natuerlich nicht geht wenn arguments ein int[] ist.