{"id":209,"date":"2018-10-28T03:41:45","date_gmt":"2018-10-28T03:41:45","guid":{"rendered":"http:\/\/joffremoncayo.com\/blog\/?p=209"},"modified":"2019-11-09T04:24:10","modified_gmt":"2019-11-09T04:24:10","slug":"operador-condicional-null-en-csharp","status":"publish","type":"post","link":"https:\/\/joffremoncayo.com\/blog\/operador-condicional-null-en-csharp\/","title":{"rendered":"Operador Condicional NULL ?. en C#"},"content":{"rendered":"<p>En el desarrollo de software, una buena pr\u00e1ctica antes de invocar a los miembros de un objeto es comprobar si el mismo fue instanciado correctamente. Para esto, comprobamos si su valor es diferente de <code>null<\/code>, si es verdadero, podemos usar sus miembros. De esta forma, evitamos que el compilador genere una excepci\u00f3n de tipo <code>NullReferenceException<\/code>, que detendr\u00eda la ejecuci\u00f3n del programa.<\/p>\n<p>El Operador Condicional&nbsp;<strong>?.<\/strong> es una forma abreviada&nbsp;de comprobar si el valor de un objeto es <code>null<\/code>, antes de tener acceso a sus miembros y hacer uso de ellos.&nbsp;La sintaxis es la siguiente:<\/p>\n<pre>Objeto<strong>?.<\/strong>Miembro<\/pre>\n<p>Que es equivalente a:<\/p>\n<pre><strong>if (<\/strong>Objeto <strong>!= null)<\/strong>\n   Objeto.Miembro\n<\/pre>\n<p>En el siguiente ejemplo tenemos una clase llamada <code>Persona<\/code>, con una sola propiedad: <code>Nombre<\/code>. El m\u00e9todo <code>MostrarNombre<\/code> muestra en pantalla el nombre de la persona.<\/p>\n<pre>static void MostrarNombre(Persona persona)\n{\n    if (persona != null)\n       Console.WriteLine(persona.Nombre);\n}\n<\/pre>\n<p>Con el uso del operador condicional <code>null<\/code> el resultado es el mismo:<\/p>\n<pre>static void MostrarNombre(Persona persona)\n{\n    Console.WriteLine(persona<strong>?.<\/strong>Nombre);\n}\n<\/pre>\n<p>Podemos tambi\u00e9n usar m\u00faltiples operadores condicionales de forma combinada. El siguiente c\u00f3digo es valido:<\/p>\n<pre>static void MostrarCiudadDireccion(Persona persona)\n{\n    Console.WriteLine(persona<strong>?.<\/strong>Direccion<strong>?.<\/strong>Ciudad);\n}\n<\/pre>\n<p>En el caso de que persona sea <code>null<\/code>, el operador <code>?.<\/code> no permite el acceso a <code>Direccion<\/code> ni <code>Ciudad<\/code>.<\/p>\n<h2>Referencias<\/h2>\n<p><a href=\"https:\/\/docs.microsoft.com\/es-mx\/dotnet\/csharp\/language-reference\/operators\/null-conditional-operators\" target=\"_blank\" rel=\"noopener noreferrer\">?. y ?[]: operadores condicionales NULL (C# y Visual Basic)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el desarrollo de software, una buena pr\u00e1ctica antes de invocar a los miembros de un objeto es comprobar si el mismo fue instanciado correctamente. Para esto, comprobamos si su valor es diferente de null, si es verdadero, podemos usar sus miembros. De esta forma, evitamos que el compilador genere una excepci\u00f3n de tipo NullReferenceException, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[8],"tags":[],"_links":{"self":[{"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/posts\/209"}],"collection":[{"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":14,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/posts\/209\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/posts\/209\/revisions\/251"}],"wp:attachment":[{"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/categories?post=209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/joffremoncayo.com\/blog\/wp-json\/wp\/v2\/tags?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}