Guest User

Untitled

a guest
Jan 22nd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.47 KB | None | 0 0
  1. string variable = null;
  2. variable.ToUpper();
  3.  
  4. ref1.ref2.ref3.miembro
  5.  
  6. var r1 = ref1;
  7. var r2 = r1.ref2;
  8. var r3 = r2.ref3;
  9. r3.miembro
  10.  
  11. public class Libro {
  12. public string Titulo { get; set; }
  13. }
  14. public class Ejemplo {
  15. public void Prueba() {
  16. Libro b1;
  17. string titulo = b1.Titulo; // Nunca has inicializado la variable b1
  18. // asi que no hay ningun libro del que obtener el título
  19. }
  20. }
  21.  
  22. Libro b1 = new Libro();
  23.  
  24. public class Persona {
  25. public int Edad { get; set; }
  26. }
  27. public class Libro {
  28. public Persona Autor { get; set; }
  29. }
  30. public class Ejemplo {
  31. public void Prueba() {
  32. Libro b1 = new Libro();
  33. int edadAutor = b1.Autor.Edad; // La propiedad Autor nunca ha sido inicializada
  34. // asi que no existe ninguna Persona de la que obtener su edad.
  35. }
  36. }
  37.  
  38. Libro b1 = new Libro { Autor = { Edad = 45 } };
  39.  
  40. int[] numeros = null;
  41. int n = numeros[0]; // numeros es null. No pueden existir los indices.
  42.  
  43. Persona[] gente = new Persona[5];
  44. gente[0].Edad = 20 // gente[0] es null. El array ha sido asignado en memoria pero no inicializado
  45. // No existe ninguna persona para la que asignar la edad.
  46.  
  47. long[][] array = new long[1][];
  48. array[0][0] = 3; // es null porque sólo la primera dimensión ha sido inicializada.
  49. // Se debe usar array[0] = new long[2]; primero.
  50.  
  51. Dictionary<string, int> edadesPorNombres = null;
  52. int age = edadesPorNombres["Bob"]; // edadesPorNombres is null.
  53. // No existe ningún Diccionario donde realizar la búsqueda.
  54.  
  55. public class Persona {
  56. public string Nombre { get; set; }
  57. }
  58. var gente = new List<Persona>();
  59. gente.Add(null);
  60. var nombres = from p in gente select p.Nombre;
  61. string primerNombre = nombres.First(); // La Excepción se lanza aquí, pero en realidad ha ocurrido
  62. // en la línea anterior. "p" es null porque el primer
  63. // elemento que añadimos a la lista es null
  64.  
  65. public class Demo
  66. {
  67. public event EventHandler EstadoCambiado;
  68.  
  69. protected virtual void OnEstadoCambiado(EventArgs e)
  70. {
  71. EstadoCambiado(this, e); // La excepción es lanzada aquí
  72. // si no existe ningún manejador de eventos acoplado
  73. // al evento EstadoCambiado
  74. }
  75. }
  76.  
  77. public class Form1 {
  78. private Cliente cliente;
  79.  
  80. private void Form1_Load(object sender, EventArgs e) {
  81. Cliente cliente = new Cliente();
  82. cliente.Nombre = "Juan";
  83. }
  84.  
  85. private void Button_Click(object sender, EventArgs e) {
  86. MessageBox.Show(cliente.Nombre);
  87. }
  88. }
  89.  
  90. private Cliente _cliente;
  91.  
  92. public partial class EdicionProblemas : System.Web.UI.Page
  93. {
  94. protected ProblemaTest miProblema;
  95.  
  96. protected void Page_Load(object sender, EventArgs e)
  97. {
  98. if (!IsPostBack)
  99. {
  100. // Solo se llama en la primera carga, no cuando se pulsa el botón
  101. miProblema= new ProblemaTest();
  102. }
  103. }
  104.  
  105. protected void BotonGuardar_Click(object sender, EventArgs e)
  106. {
  107. myProblema.Entrada = "¡NullReferenceException aqui!";
  108. }
  109. }
  110.  
  111. // si el valor de sesión "Nombre" no ha sido añadido todavía,
  112. // entonces esta línea lanzará una NullReferenceException
  113. string nombre = Session["Nombre"].ToString();
  114.  
  115. // Controlador
  116. public class Restaurante:Controller
  117. {
  118. public ActionResult Buscar()
  119. {
  120. return View(); // Olvidaste proporcionar un modelo aqui.
  121. }
  122. }
  123.  
  124. // Razor view
  125. @foreach (var restauranteBuscar in Model.BuscarRestaurante) // Se lanza la excepción.
  126. {
  127. }
  128.  
  129. <p>@Model.algunaPropiedad</p> <!-- tambien se lanza la excepción -->
  130.  
  131. <Grid>
  132. <!-- Combobox se declara primero -->
  133. <ComboBox Name="comboBox1"
  134. Margin="10"
  135. SelectedIndex="0"
  136. SelectionChanged="comboBox1_SelectionChanged">
  137. <ComboBoxItem Content="Elemento 1" />
  138. <ComboBoxItem Content="Elemento 2" />
  139. <ComboBoxItem Content="Elemento 3" />
  140. </ComboBox>
  141.  
  142. <!-- Label declarado después -->
  143. <Label Name="label1"
  144. Content="Etiqueta"
  145. Margin="10" />
  146. </Grid>
  147.  
  148. private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
  149. {
  150. label1.Content = comboBox1.SelectedIndex.ToString(); // ¡¡NullReference aquí!!
  151. }
  152.  
  153. var miCosa = unObjeto as Cosa;
  154.  
  155. List<int> lista = null;
  156. foreach(var v in lista) { } // excepción
  157.  
  158. foreach (var nodo in myData.MyXml.DocumentNode.SelectNodes("//Datos"))
  159.  
  160. void ImprimirNombre(Persona p) {
  161. if (p != null) {
  162. Console.WriteLine(p.Nombre);
  163. }
  164. }
  165.  
  166. string ObtenerCategoria(Libro b) {
  167. if (b == null)
  168. return "Desconocida";
  169. return b.Categoria;
  170. }
  171.  
  172. string ObtenerCategoria(string titulo) {
  173. var libro = biblioteca.BuscarLibro(titulo); // Esto podría devolver null
  174. if (libro == null)
  175. throw new LibroNoEncontradoException(titulo); // Tu excepción personalizada
  176. return libro.Categoria;
  177. }
  178.  
  179. string ObtenerTitulo(int libroExistenteID) {
  180. // Sabes que esto nunca debería devolver null.
  181. var libro = biblioteca.ObtenerLibro(libroExistenteID);
  182.  
  183. // La excepción se lanzará en la linea siguiente en lugar de la final del método.
  184. Debug.Assert(libro != null, "Biblioteca no devolvió ningun libro para el ID de un libro existente.");
  185.  
  186. // ...otro código...
  187.  
  188. return book.Titulo; // Nunca se lanzará una NullReferenceException en modo de depuración(Debug).
  189. }
  190.  
  191. DateTime? cita = null;
  192. Console.WriteLine(cita.GetValueOrDefault(DateTime.Now));
  193. // Mostrará el valor por defecto proporcionado (DateTime.Now), porque cita es null.
  194.  
  195. cita = new DateTime(2022, 10, 20);
  196. Console.WriteLine(cita.GetValueOrDefault(DateTime.Now));
  197. // Mostrará la fecha de la cita, no el valor por defecto
  198.  
  199. IService CrearServicio(ILogger log, Int32? nivel)
  200. {
  201. var serviceImpl = new MiServicio(log ?? NullLog.Instance);
  202.  
  203. // Fíjate que el "GetValueOrDefault()" de arriba puede ser reescrito para usar el operador ??
  204. serviceImpl.nivel = nivel ?? 5;
  205. }
  206.  
  207. var titulo = persona.Titulo.ToUpper();
  208.  
  209. var titulo = persona.Titulo == null ? null : persona.Titulo.ToUpper();
  210.  
  211. var titulo = persona.Titulo?.ToUpper();
  212.  
  213. // comprobación normal de null
  214. int longitudTitulo = 0;
  215. if (titulo != null)
  216. longitudTitulo = titulo.Length; // Si titulo es null, esto lanzará una NullReferenceException
  217.  
  218. // combinando los operadores `?` y `??`
  219. int longitudTitulo = titulo?.Length ?? 0;
Add Comment
Please, Sign In to add comment