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.


Anmelden zum Antworten