2012-07-29 16 views
5

¡Estoy obteniendo un divertido error de compilación! También lo pegaré aquí: "el tipo (mi clase) debe ser de tipo no anulable para usar como parámetro 'T' en el método genérico"el tipo (mi clase) debe ser de tipo no nulo para usar como parámetro 'T' en un método genérico

Esto no tiene sentido para mí ya que mi método no es genérico Así es como yo llamo el código erróneo:

Item? inputtedItem = SearchProduct(txtProduct.Text); 

Mientras tanto, aquí es la definición de SearchProduct:

 private Item? SearchProduct(string product) 
    { 
     //If this is the first item to be entered into the inventory 
     if (_inventory == null || _inventory._productList.Count == 0) 
     { 
      return null; 
     } 
     //Return the Item's instance if it appears in the inventory. Otherwise return null. 
     return _inventory[product]; 
    } 

supongo que voy a añadir el indexador de mi clase de inventario aquí por si acaso :

 public Item this[string i] 
    { 
     get 
     { 
      Item returnItem; 
      _productList.TryGetValue(i, out returnItem); 
      return returnItem; 
     } 
     set 
     { 
      _productList.Add(i, value); 
     } 
    } 

¿Alguien sabe qué pasa?

Gracias por la ayuda.

+0

¿Es 'Item' una 'struct'? – dtb

+0

¿'SearchProduct' es una implementación de un método de interfaz? ¿Una interfaz que podría tener un parámetro genérico 'T' para el que ingresó' Item'? – Virtlink

+0

Creo que TryGetValue es su método genérico. ¿Cuál es exactamente el tipo de _productList? –

Respuesta

6

No creo que necesite el ? en Item?. Si Item es una clase definida personalizada, será anulable por defecto.

+0

Creo que podrías haber golpeado el clavo en la cabeza. El artículo solía ser struct, por lo que necesitaba convertirlo en nulo. Olvidé que las clases son tipos de referencia por defecto, por lo que siempre pueden contener nulos. Déjame ver si cambiar eso funciona! gracias – Nick

Cuestiones relacionadas