2010-11-10 22 views

Respuesta

36

Uso nullable types:

List<int, SomeStruct?> 

No puede asignar null a un elemento de la lista porque las estructuras son tipos de valor, mientras que null significa un puntero de vacío, por lo que sólo se puede asignar a las variables de tipo referencia.

También tenga en cuenta que List como lo está utilizando no existe en .NET! Tal vez quiere Dictionary?

+0

Cuando hago esto, cualquier referencia al miembro de estructuras ahora me da el error: System.Nullable <> no contiene una definición para 'Miembro' –

+1

@whydna: Lee sobre tipos anulables. Básicamente, 'SomeStruct?' Es azúcar sintáctica para 'Nullable '. No puede acceder a los miembros directamente, pero ese es el precio que paga por usar semántica 'null' con un tipo de valor. –

+0

Gracias por su ayuda :) –

10

En C# una estructura es un 'tipo de valor', que no puede ser nulo.

Si realmente necesita poder anular esto, conviértalo en un tipo 'anulable' agregando un signo de interrogación al final.

Sin embargo, es probable que primero tenga en cuenta los detalles, es muy probable que realmente no desee una 'estructura', pero sería mejor con una 'clase'.

+3

De acuerdo. El problema es que no poseo el Struct, simplemente lo estoy usando :( –

3

A menos que haya definido una colección genérica personalizada, List<T, U> no existe en el espacio de nombres System.Collections.Generic. ¿Prefieres decir Dictionary<TKey, TValue>?

Puede usar los tipos anulables: Using Nullable Types (C# Programming Guide).

Al igual que con cualquier ValueType, debe especificar explícitamente que permitirá valores nulos para su tipo. Puede hacerlo concatenando el carácter '?' con su nombre de tipo, o marcándolo como Nullable, donde T es el nombre de su estructura.

+1

¡No pude resistirme a responder cuando vi que iban a haber tres 'Will' respondiendo una pregunta! = P –

+5

Donde hay tres Testamentos allí son tres formas? – RenniePet

Cuestiones relacionadas