Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string variable = null;
- variable.ToUpper();
- ref1.ref2.ref3.miembro
- var r1 = ref1;
- var r2 = r1.ref2;
- var r3 = r2.ref3;
- r3.miembro
- public class Libro {
- public string Titulo { get; set; }
- }
- public class Ejemplo {
- public void Prueba() {
- Libro b1;
- string titulo = b1.Titulo; // Nunca has inicializado la variable b1
- // asi que no hay ningun libro del que obtener el título
- }
- }
- Libro b1 = new Libro();
- public class Persona {
- public int Edad { get; set; }
- }
- public class Libro {
- public Persona Autor { get; set; }
- }
- public class Ejemplo {
- public void Prueba() {
- Libro b1 = new Libro();
- int edadAutor = b1.Autor.Edad; // La propiedad Autor nunca ha sido inicializada
- // asi que no existe ninguna Persona de la que obtener su edad.
- }
- }
- Libro b1 = new Libro { Autor = { Edad = 45 } };
- int[] numeros = null;
- int n = numeros[0]; // numeros es null. No pueden existir los indices.
- Persona[] gente = new Persona[5];
- gente[0].Edad = 20 // gente[0] es null. El array ha sido asignado en memoria pero no inicializado
- // No existe ninguna persona para la que asignar la edad.
- long[][] array = new long[1][];
- array[0][0] = 3; // es null porque sólo la primera dimensión ha sido inicializada.
- // Se debe usar array[0] = new long[2]; primero.
- Dictionary<string, int> edadesPorNombres = null;
- int age = edadesPorNombres["Bob"]; // edadesPorNombres is null.
- // No existe ningún Diccionario donde realizar la búsqueda.
- public class Persona {
- public string Nombre { get; set; }
- }
- var gente = new List<Persona>();
- gente.Add(null);
- var nombres = from p in gente select p.Nombre;
- string primerNombre = nombres.First(); // La Excepción se lanza aquí, pero en realidad ha ocurrido
- // en la línea anterior. "p" es null porque el primer
- // elemento que añadimos a la lista es null
- public class Demo
- {
- public event EventHandler EstadoCambiado;
- protected virtual void OnEstadoCambiado(EventArgs e)
- {
- EstadoCambiado(this, e); // La excepción es lanzada aquí
- // si no existe ningún manejador de eventos acoplado
- // al evento EstadoCambiado
- }
- }
- public class Form1 {
- private Cliente cliente;
- private void Form1_Load(object sender, EventArgs e) {
- Cliente cliente = new Cliente();
- cliente.Nombre = "Juan";
- }
- private void Button_Click(object sender, EventArgs e) {
- MessageBox.Show(cliente.Nombre);
- }
- }
- private Cliente _cliente;
- public partial class EdicionProblemas : System.Web.UI.Page
- {
- protected ProblemaTest miProblema;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- // Solo se llama en la primera carga, no cuando se pulsa el botón
- miProblema= new ProblemaTest();
- }
- }
- protected void BotonGuardar_Click(object sender, EventArgs e)
- {
- myProblema.Entrada = "¡NullReferenceException aqui!";
- }
- }
- // si el valor de sesión "Nombre" no ha sido añadido todavía,
- // entonces esta línea lanzará una NullReferenceException
- string nombre = Session["Nombre"].ToString();
- // Controlador
- public class Restaurante:Controller
- {
- public ActionResult Buscar()
- {
- return View(); // Olvidaste proporcionar un modelo aqui.
- }
- }
- // Razor view
- @foreach (var restauranteBuscar in Model.BuscarRestaurante) // Se lanza la excepción.
- {
- }
- <p>@Model.algunaPropiedad</p> <!-- tambien se lanza la excepción -->
- <Grid>
- <!-- Combobox se declara primero -->
- <ComboBox Name="comboBox1"
- Margin="10"
- SelectedIndex="0"
- SelectionChanged="comboBox1_SelectionChanged">
- <ComboBoxItem Content="Elemento 1" />
- <ComboBoxItem Content="Elemento 2" />
- <ComboBoxItem Content="Elemento 3" />
- </ComboBox>
- <!-- Label declarado después -->
- <Label Name="label1"
- Content="Etiqueta"
- Margin="10" />
- </Grid>
- private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- label1.Content = comboBox1.SelectedIndex.ToString(); // ¡¡NullReference aquí!!
- }
- var miCosa = unObjeto as Cosa;
- List<int> lista = null;
- foreach(var v in lista) { } // excepción
- foreach (var nodo in myData.MyXml.DocumentNode.SelectNodes("//Datos"))
- void ImprimirNombre(Persona p) {
- if (p != null) {
- Console.WriteLine(p.Nombre);
- }
- }
- string ObtenerCategoria(Libro b) {
- if (b == null)
- return "Desconocida";
- return b.Categoria;
- }
- string ObtenerCategoria(string titulo) {
- var libro = biblioteca.BuscarLibro(titulo); // Esto podría devolver null
- if (libro == null)
- throw new LibroNoEncontradoException(titulo); // Tu excepción personalizada
- return libro.Categoria;
- }
- string ObtenerTitulo(int libroExistenteID) {
- // Sabes que esto nunca debería devolver null.
- var libro = biblioteca.ObtenerLibro(libroExistenteID);
- // La excepción se lanzará en la linea siguiente en lugar de la final del método.
- Debug.Assert(libro != null, "Biblioteca no devolvió ningun libro para el ID de un libro existente.");
- // ...otro código...
- return book.Titulo; // Nunca se lanzará una NullReferenceException en modo de depuración(Debug).
- }
- DateTime? cita = null;
- Console.WriteLine(cita.GetValueOrDefault(DateTime.Now));
- // Mostrará el valor por defecto proporcionado (DateTime.Now), porque cita es null.
- cita = new DateTime(2022, 10, 20);
- Console.WriteLine(cita.GetValueOrDefault(DateTime.Now));
- // Mostrará la fecha de la cita, no el valor por defecto
- IService CrearServicio(ILogger log, Int32? nivel)
- {
- var serviceImpl = new MiServicio(log ?? NullLog.Instance);
- // Fíjate que el "GetValueOrDefault()" de arriba puede ser reescrito para usar el operador ??
- serviceImpl.nivel = nivel ?? 5;
- }
- var titulo = persona.Titulo.ToUpper();
- var titulo = persona.Titulo == null ? null : persona.Titulo.ToUpper();
- var titulo = persona.Titulo?.ToUpper();
- // comprobación normal de null
- int longitudTitulo = 0;
- if (titulo != null)
- longitudTitulo = titulo.Length; // Si titulo es null, esto lanzará una NullReferenceException
- // combinando los operadores `?` y `??`
- int longitudTitulo = titulo?.Length ?? 0;
Add Comment
Please, Sign In to add comment