Antes de C# 8.0, todos los tipos de referencia podían ser nulos. Los tipos de referencia nulos se refieren a un conjunto de características introducidas en C# 8.0 que pueden usarse paraMinimiza la probabilidad de que tu código provoque fallos en tiempo de ejecución。 Los tipos de referencia anulables incluyen tres características para ayudar a evitar estas excepciones, incluyendo la capacidad de marcar explícitamente los tipos de referencia como anulables:
- Análisis de flujo estático optimizado para determinar si una variable es nula antes de que se deje de referenciar.
- Atributos que se usan para anotar la API y que Stream Analytics determine el estado nulo.
- Anotaciones de variables que los desarrolladores pueden usar para declarar explícitamente el estado nulo esperado de una variable.
El análisis de estado nulo y las anotaciones de variables están deshabilitados por defecto para proyectos existentes, lo que significa que todos los tipos de referencia siguen siendo anulables. A partir de .NET 6, estas funciones se activan por defecto para nuevos proyectos.
Documentación:El inicio de sesión del hipervínculo es visible.
Lo que un tipo de referencia puede ser nulo es hacerMinimiza la posibilidad de que tu aplicación muestre una Excepción System.NullReferenceEn tiempo de ejecución。
En un proyecto que estoy desarrollando con .NET 6, creo una propiedad Name para una nueva propiedad que me muestra la siguiente advertencia:
Al salir del constructor, la propiedad no anulable "Name" debe contener un valor no nulo. Considera declarar la propiedad como puede ser nula.
Aunque es una advertencia, ¡es muy molesto! ¿Cómo puedo solucionar esta advertencia? El valor por defecto para la asignación es una cadena vacía, y el código es el siguiente:
Es decir, cuando la propiedad no se asigna manualmente, el valor por defecto de la propiedad es una cadena vacía.
Al usar una variable local,¿El tipo es de cuerda? también puede generar advertencias, como se muestra en la figura siguiente:
Solución, determinar si la variable es nula antes de usarla, y si lo es, no ejecutes el código de abajo, o creesLa variable nunca puede ser nula, puede usarseArgumentNullException.ThrowIfNull(assemblyFullName); ¡También se pueden eliminar las advertencias! En otras palabras, si la variable es nula, ¡lanzará una excepción directamente durante la ejecución!
Resumen: C# 8.0 introdujo esta función, y personalmente creo que es para mejorar el rigor de los desarrolladores y evitar cometer errores de bajo nivel.
Para más soluciones de método que puedan ser nulas, por favor consulte:El inicio de sesión del hipervínculo es visible.
|