<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://andorradotnet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>AndorraDotNet</title><link>http://andorradotnet.com/blogs/</link><description>Comunitat d'usuaris .NET del pais dels pirineus</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Microsoft Enterprise Library 4.1 y los HOL de Validation Application Block</title><link>http://andorradotnet.com/blogs/jorge/archive/2009/01/04/microsoft-enterprise-library-4-1-y-los-hol-de-validation-application-block.aspx</link><pubDate>Sun, 04 Jan 2009 14:30:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:430</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="100" alt="" src="http://geeks.ms/photos/jorge/images/780/original.aspx" width="100" border="1" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Personalmente no me gusta mucho la Microsoft Enterprise Library, no como a &lt;a class="" href="http://geeks.ms/blogs/elbruno/"&gt;otros&lt;/a&gt;, pero reconozco que para diferentes tareas o acciones puede resultar muy útil.&lt;/p&gt;
&lt;p&gt;Recordemos que Microsoft Enterprise Library, está formado por un conjunto de bloques de aplicación reutilizables que realizan acciones comunes y que pueden ser utilizados global o independientemente en los desarrollos de nuestras aplicaciones Software.&lt;/p&gt;
&lt;p&gt;La versión 4.1 de Enterprise Library en inglés y de casi 32 Mb fue lanzada el pasado mes de Octubre de 2008 e incluye bloques de aplicaciones para Caching, Cryptography, Data Access, Exception Handling, Logging, Policy Injection, Security, Validation,&amp;nbsp;y Unity.&lt;/p&gt;
&lt;p&gt;Dentro de MSDN, podemos encontrar información acerca de esta nueva versión de Microsoft Enterprise Library y de versiones anteriores, como por ejemplo &lt;a class="" href="http://msdn.microsoft.com/en-us/library/cc467894.aspx"&gt;en este enlace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para acceder a las novedades o información de Microsoft Enterprise Library 4.1 en MSDN, podemos hacer clic &lt;a class="" href="http://msdn.microsoft.com/en-us/library/dd203099.aspx"&gt;en este otro enlace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dentro de Microsoft Enterprise Library 4.1, encontraremos un bloque de aplicación denominado Validation.&lt;/p&gt;
&lt;p&gt;El &lt;a class="" href="http://msdn.microsoft.com/en-us/library/dd140088.aspx"&gt;Validation Application Block&lt;/a&gt;, nos permite crear reglas de validación para nuestros objetos de negocio que podrán ser utilizados a lo largo de las diferentes capas de nuestra aplicación.&lt;/p&gt;
&lt;p&gt;En todo esto, Microsoft ha decidido publicar un HOL (Hands On Labs) sobre Microsoft Validation Application Block, que nos ayudará a lo largo de 13 tutoriales escritos en inglés, a avanzar en el conocimiento de este bloque de aplicación.&lt;/p&gt;
&lt;p&gt;Los laboratorios están escritos en inglés y ocupan casi 5 Mb. Los primeros 11 laboratorios están focalizados en aplicaciones Windows, los dos últimos en aplicaciones Web, y el último, además de en aplicación Web, utilizando WCF, lo cuál puede resultar incluso útil para entender como funciona WCF.&lt;/p&gt;
&lt;p&gt;Aparte de todo esto, no puedo dejar de aprovechar la ocasión para mencionar el Unity Application Block, del cuál os dejo un enlace con información en las referencias de esta entrada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;Referencias&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Enlace Web: &lt;/font&gt;&lt;a class="" href="http://msdn.microsoft.com/en-us/library/dd203099.aspx"&gt;&lt;font size="2"&gt;Información sobre Microsoft Enterprise Library 4.1&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Enlace de Descarga: &lt;/font&gt;&lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en"&gt;&lt;font size="2"&gt;Microsoft Enterprise Library 4.1 (31 Mb - Inglés - Octubre 2008)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Enlace Web: &lt;/font&gt;&lt;a class="" href="http://msdn.microsoft.com/en-us/library/dd140088.aspx"&gt;&lt;font size="2"&gt;Información sobre Validation Application Block&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Enlace de Descarga: &lt;/font&gt;&lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2c34a9cb-17cf-4aec-8de6-eeacbbb74413&amp;amp;DisplayLang=en"&gt;&lt;font size="2"&gt;HOL - Validation Application Block 4.1 (5Mb - Inglés)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Enlace Web: &lt;/font&gt;&lt;a class="" href="http://msdn.microsoft.com/en-us/library/dd140117.aspx"&gt;&lt;font size="2"&gt;Información sobre Unity Application Block&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=430" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Arquitectura/default.aspx">Arquitectura</category></item><item><title>Mentoring vs Coaching, y Brainstorming</title><link>http://andorradotnet.com/blogs/jorge/archive/2009/01/03/mentoring-vs-coaching-y-brainstorming.aspx</link><pubDate>Sat, 03 Jan 2009 15:30:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:429</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;Introducción&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hay un aspecto que en particular le he dado siempre un valor muy alto en cualquier empresa en la que he estado, y en la que prácticamente a ninguna he visto aplicar de hecho. Sí de palabra o tímidamente, pero nunca de acción. Supongo que es porque a nadie le gusta escuchar las críticas o los errores, y en muchas ocasiones escuchar incluso la verdad, cerrándose en un &amp;quot;yo lo sé todo, no necesito que nadie me diga nada&amp;quot;. Me refiero al brainstorming.&lt;/p&gt;
&lt;p&gt;Transparencia, confianza, apoyo, motivación, son algunos de los aspectos muy muy importantes en el día a día y en trabajos relacionados directa o indirectamente con las TI, ya que es un campo en el que es facilísimo pasar de la euforia al estrés, presión o apatía.&lt;/p&gt;
&lt;p&gt;No obstante, es casi siempre necesario tener una retroalimentación y en su caso una formación concreta para abordar determinados problemas, sobre todo cuando nos encontramos atascados.&lt;/p&gt;
&lt;p&gt;Por esa razón, en nuestro sector es muy frecuente escuchar hablar de mentoring y coaching como valores diferentes, aunque hay personas que los confunden, y otras, que no saben exactamente en qué consisten o cuales son sus diferencias más concretas.&lt;/p&gt;
&lt;p&gt;Es casi siempre menos dañino para un responsable, recibir retroalimentación y sugerencias, ideas o consejos de fuera que desde dentro, desde sus compañeros y subordinados. Pero en otras ocasiones no queda más remedio que recibir la ayuda del exterior.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coaching&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Por un lado, coaching es quizás a priori el término más cotidiano o familiar para nosotros, y tiene como objetivo principal lograr eficazmente una serie de metas por parte del entrenador (o coach) y el grupo de personas que deben estar implicadas en la consecución de dichos objetivos. Pensemos en cualquier equipo deportivo.&lt;/p&gt;
&lt;p&gt;Pero si profundizamos en la teoría del coaching de una forma más profunda, quizás este término sea más desconocido para todos nosotros, y es que se entiende por coaching a las preguntas que el entrador hace con el fin de lograr que el cliente (coachee) pueda reflexionar y obtener el máximo rendimiento a sus problemas con la mente puesta en lograr la consecución de los objetivos marcados. Esta explicación como podrás ver, difiere ligeramente con la explicación del término coaching que hemos dado anteriomente.&lt;/p&gt;
&lt;p&gt;El coachee por su parte, suele contar con la información adecuada y extensa que le permite resolver sus problemas, además de su propia experiencia. La dificultad con la que se encuentra el coachee es que en muchas ocasiones no sabe como enfrentarse a esos problemas o en castellano plano, no sabe por donde empezar a meter la cuchara.&lt;/p&gt;
&lt;p&gt;Si acercamos esta explicación al día a día nuestro, veremos al coachee esa persona que sabe del negocio, que tiene el conocimiento del negocio muy bien estructurado en su mente, que sabe lo que quiere, pero que no sabe como lograr llegar a buen puerto pese a tener una amplia experiencia personal y profesional.&lt;/p&gt;
&lt;p&gt;Si esta explicación la metemos de lleno en el desarrollo Software, veremos como coachee a esa persona de la empresa &amp;quot;X&amp;quot; que tiene una aplicación desarrollada en no se qué lenguaje o tecnología obsoleta, que desea migrarla a .NET (por ejemplo) y que tiene un conocimiento del negocio bestial, pero que en realidad, su mayor problema o dificultad es que no conoce .NET, no sabe qué cosas necesitaría para empezar, y lo que es más importante, no sabe qué tiene que hacer para crear un nuevo producto con esa nueva tecnología que aglutine toda la lógica de negocio e ideas que el coachee o cliente tiene, junto a aquellas nuevas necesidades que han ido apareciendo en los últimos años.&lt;/p&gt;
&lt;p&gt;Podemos poner mil y un ejemplos no solo orientados al desarrollo, y es que el tópico de que el cliente no sabe lo que quiere, es falso. El cliente sabe lo que quiere, el problema es que no sabe si es eso lo que quiere o no y tiene dudas de como lograr sus objetivos, y ahí es donde en gran parte, entra en juego el coaching o entrenador, que nunca debe revelar su propia experiencia y sí dejar que el coachee aprenda de sus propios conocimientos, marcándole eso sí, unas pautas que le servirán para lograr sus hitos.&lt;/p&gt;
&lt;p&gt;Como bien dice la wikipedia sobre el término &lt;a class="" href="http://es.wikipedia.org/wiki/Coaching"&gt;coaching&lt;/a&gt;, el entrenador asiste al coachee a aprender de sí mismo. En sí, lo que busca el entrenador es la implicación del coachee en su problemática (algo que a buen seguro hace) pero tratando de que aprenda a resolver el problema o los problemas que tiene basándose en una serie de pautas que le ayuden a orientar la solución o soluciones adecuadamente.&lt;/p&gt;
&lt;p&gt;Las 5 pautas generales que indica la entrada de la wikipedia que hay que seguir sobre coaching serían: Observar, Tomar conciencia, Determinar los objetivos, Actuar y Medir.&lt;/p&gt;
&lt;p&gt;En sí, es una técnica cortante, ya que se puede conseguir el efecto contrario si el coaching no es una persona experimentada, o aún peor, un &amp;quot;vende motos&amp;quot; o &amp;quot;vende humo&amp;quot; como es muy frecuente encontrar en el mercado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mentoring&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A mentoring se la conoce también como mentorship, cuya palabra inglesa puede acercarse más a su significado más puro, el de la relación.&lt;/p&gt;
&lt;p&gt;En sí, mentoring tiene como objetivo crear un vínculo de relación en el que una persona especializada, ayuda a otra persona no especializada o menos especializada, a llevar a cabo una tarea o un conjunto de tareas que le permitan aprender profesionalmente en un camino &amp;quot;mano a mano&amp;quot; con el mentor.&lt;/p&gt;
&lt;p&gt;La base del aprendizaje es la experiencia del mentor, algo que existe en el coaching, pero con la diferencia de que el coaching nunca expresa su experiencia al coachee y es el coachee el que aprende de su propia experiencia y conocimientos, mientras que en el caso del mentorship, el mentor sí especifica su experiencia, conocimiento, consejos y trucos para que el mentee o aprendiz aprenda y pueda continuar su camino sin ayuda del mentor en cuanto tenga la base de conocimiento suficiente.&lt;/p&gt;
&lt;p&gt;Cada vez que se habla de mentorship, a mí me gusta poner el ejemplo del polluelo que sale del huevo. Al principio no podrá volar por sí mismo, tampoco tendrá su cuerpo preparado para ello, pero un día, cuando esté bien alimentado y preparado, podrán enseñarle a hacerlo y será independiente, pudiendo volar por sí mismo cuando desee. El mentorship trata de ayudar al aprendiz para que consiga y logre satisfactoriamente su meta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relación entre Coaching y Mentoring&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Llegado a este punto, hay quien afirma que un mentor es en sí un coach o entrenador, y de hecho hay una estrecha relación, tan estrecha que podríamos responder a esa pregunta que sí. Pensemos que un coach y un mentor, tienen el objetivo de facilitar el logro de los objetivos del coachee o mentee.&lt;/p&gt;
&lt;p&gt;Sin embargo, un coach no tiene porqué ser un mentor. El mentor tiene una serie de cualidades que no tiene porqué tener un coach cuando de coaching se refiere. Por ejemplo, un mentor se suele apoyar y mucho, de su propia experiencia, la cual basa para que el cliente o mentee logre sus objetivos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Brainstorming&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para que un brainstorming o lluvia de ideas sea efectivo, debe realizarse sin compromisos, totalmente abierto a críticas, entre un grupo de personas lo suficientemente grande o amplio como para recabar opiniones e informaciones variadas, y con buen sentido del humor y relajados, ya que a veces, durante la lluvia de ideas se pueden decir cosas que no tienen porqué gustar a otras personas presentes o no en la sesión de lluvia de ideas.&lt;/p&gt;
&lt;p&gt;El punto más importante es el de estar abierto a sugerencias y a críticas. Por lo general, a nadie le gusta que le digan lo que tiene que hacer y mucho menos sacarle los colores delante de más gente.&lt;/p&gt;
&lt;p&gt;El objetivo de la lluvia de ideas es la de criticar constructivamente el presente o pasado, apoyándose en los aspectos futuros que se podrían agregar.&lt;/p&gt;
&lt;p&gt;En la base del coaching y del mentorship, está el brainstorming y la retroalimentación.&lt;/p&gt;
&lt;p&gt;Mi opinión es que antes de que abordemos un proceso de coaching o mentorship (siendo nosotros un aprendiz), es hacer una especie de examen de conciencia, análisis previo personal y profesional, basado en la sinceridad, y con aportes sinceros de tipo brainstorming.&lt;/p&gt;
&lt;p&gt;Muchas empresas reciben coaching o mentorship sin haber analizado previamente nada de lo que tiene alrededor. Muchas veces, los propios empleados, compañeros y subordinados, tienen la solución, y en otras ocasiones, tienen pautas o directrices que ayudarán a adoptar o conseguir los objetivos mucho más rápidamente con ayuda de un coachee o un mentor.&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=429" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Opini_26002300_243_3B00_n/default.aspx">Opini&amp;#243;n</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/General/default.aspx">General</category></item><item><title>Feliz año 11111011001</title><link>http://andorradotnet.com/blogs/lfranco/archive/2009/01/02/feliz-a-241-o-11111011001.aspx</link><pubDate>Fri, 02 Jan 2009 14:28:56 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:428</guid><dc:creator>lfranco</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;:-)   &lt;br /&gt;Aunque sea con un poco de retraso (porque me prometí a mi mismo no tocar el ordenador el día 1/1).&lt;/p&gt;  &lt;p&gt;Feliz año 2009 a todos y esperemos que sea un poquito mejor que el anterior. Que el mundo sea un lugar mejor para vivir, y que esta crisis mundial empiece a remitir, para que todos podamos levantar el vuelo de nuevo…&lt;/p&gt;  &lt;p&gt;Os dejo con una imagen que me ha pasado mi colega &lt;a href="http://www.ulibarri.net/" target="_blank"&gt;Toñín&lt;/a&gt;, en la que se ve con todo lujo de detalles el despegue desde la cabina de un A320. No me explico como salen los pilotos… tal vez por la ventana? :-P&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/cockpit320_554FE101.jpg" target="_blank"&gt;&lt;img title="cockpit320" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="436" alt="cockpit320" src="http://geeks.ms/blogs/lfranco/cockpit320_thumb_43BCA3DE.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Feliz año 2009 a &lt;a href="mailto:tod@s"&gt;tod@s&lt;/a&gt;,&lt;/p&gt;
** crossposting desde el blog de Lluís Franco en geeks.ms **&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=428" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Off-Topic/default.aspx">Off-Topic</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/2009/default.aspx">2009</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Felicidades/default.aspx">Felicidades</category></item><item><title>Sitio web de Microsoft - Visual Studio Gallery</title><link>http://andorradotnet.com/blogs/jorge/archive/2009/01/01/sitio-web-de-microsoft-visual-studio-gallery.aspx</link><pubDate>Thu, 01 Jan 2009 15:30:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:427</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="63" alt="" src="http://i.microsoft.com/global/En/us/PublishingImages/SLWindowPane/VS2008_T.png" width="63" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;¡Feliz Año 2009 a todo el mundo!.&lt;/p&gt;
&lt;p&gt;Empezaré esta primera entrada del 2009 con un sitio web que me parece muy interesante y que quiero compartir con vosotros.&lt;/p&gt;
&lt;p&gt;Se trata de un sitio web donde podremos encontrar un montón de herramientas, enlaces e información acerca de todas esas cosas que necesitaremos o podremos necesitar cuando estamos desarrollando aplicaciones.&lt;/p&gt;
&lt;p&gt;Lo cierto es que en el mercado hay multitud de herramientas, pero muchas de ellas desperdigadas por ahí.&lt;/p&gt;
&lt;p&gt;En esta web, se aglutinan casi todas las de la red, unificándolas en un único sitio, algo muy muy útil.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Referencias&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Enlace Web: &lt;a class="" href="http://visualstudiogallery.com/"&gt;Visual Studio Gallery - Sitio Web&lt;/a&gt;&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=427" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Despedida del año con dos libros ¡GRATIS!</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/31/despedida-del-a-241-o-con-dos-libros-161-gratis.aspx</link><pubDate>Wed, 31 Dec 2008 21:50:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:426</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="63" alt="" src="http://i.microsoft.com/global/En/us/PublishingImages/SLWindowPane/VS2008_T.png" width="63" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Aquí quemando las últimas horas de este 2008, y pensando ya en que el 2009 y deseando que sea lo menos malo posible para todos. Seremos optimistas frente a las agoreras predicciones de analistas y técnicos.&lt;/p&gt;
&lt;p&gt;Sobre TI se comenta por su parte que el ritmo continuará ascendente, seguramente no tan ascendente como otros años, pero a priori sigue habiendo demanda de tecnología, algo quizás paradógico, pero muy interesante al fin y al cabo.&lt;/p&gt;
&lt;p&gt;Y entre todas estas cosas, me gustaría despedir el año con dos libros gratuitos de Microsoft Press, escritos en inglés y en formato pdf, pero en mi opinión, muy interesantes.&lt;/p&gt;
&lt;p&gt;El primero de esos libros se titula Writing Secure Code for Windows Vista, escrito por Michael Howard y David LeBlanc. Para descargar el libro, deberemos acceder &lt;a class="" href="http://csna01.libredigital.com/?urrs4gt63d"&gt;a este enlace&lt;/a&gt; y registrarnos.&lt;/p&gt;
&lt;p&gt;El segundo de los libros, se titula Understanding IPv6, Second Edition, y está escrito por Joseph Davies. Para descargar este otro libro, deberemos acceder &lt;a class="" href="http://csna01.libredigital.com/?urws8un4p7"&gt;a este otro enlace&lt;/a&gt;, e igualmente registrarnos.&lt;/p&gt;
&lt;p&gt;Espero que ambos libros resulten interesantes para más de uno.&lt;/p&gt;
&lt;p&gt;¡Feliz 2009!&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=426" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/General/default.aspx">General</category></item><item><title>WSS 3.0, acceso al contenido de SQL Server 2005 Embedded Edition y como pasarlo a SQL Server 2005</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/30/wss-3-0-acceso-al-contenido-de-sql-server-2005-embedded-edition-y-como.aspx</link><pubDate>Wed, 31 Dec 2008 03:02:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:425</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="96" alt="" src="http://b0sggq.tuk.livefilestore.com/y1pQyP0L2ZqeK0W4wOmG9hV_6cH8gdwF6YIG24knri2wr4blBSASofHnzI6F8xs1f26gaIpJKhOhbI/SharePoint.png" width="120" border="1" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Compartir es vivir, y si alguien se topa con un problema o mejor aún con una solución, ¿qué mejor que compartirla por si a alguien más le pudiera servir?.&lt;/p&gt;
&lt;p&gt;En la empresa en la que trabajo, tenemos un servidor con WSS 3.0 recién instalado y SQL Server 2005 Standard. El error o el problema es que en la instalación no se asignó ésta a una granja de servidores para indicarle sobre qué instancia de SQL Server debía &amp;quot;conectarse&amp;quot;, por lo que a partir de aquí, la instalación de WSS 3.0 hace (por decirlo de alguna manera) lo que le da la gana.&lt;/p&gt;
&lt;p&gt;Y evidentemente, como no podía ser de otra forma, nos hemos topado con una magnífica base de datos instalada supuestamente en la instancia &lt;font style="BACKGROUND-COLOR:#ffcc00;"&gt;.\MICROSOFT##SSEE&lt;/font&gt; y que corresponde con una base de datos interna que utiliza nuestro flamante WSS 3.0 en la instalación &amp;quot;rápida&amp;quot; para albergar allí la configuración del sitio SharePoint, pasánsose por el forro de los caprichos la versión SQL Server 2005 Standard que teníamos instalada.&lt;/p&gt;
&lt;p&gt;Esa instancia no es otra que SQL Server 2005 Embedded Edition que a priori no dispone de una interfaz gráfica que nos permita acceder a su contenido. ¡Genial!.&lt;/p&gt;
&lt;p&gt;Sin embargo, esa interfaz gráfica (&lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;amp;displaylang=es"&gt;Microsoft SQL Server Management Studio Express&lt;/a&gt; para más señas), sí puede ser usada para acceder, ver y pulular por los objetos de MICROSOFT##SSEE, el quiz es &amp;quot;saberlo hacer&amp;quot;.&lt;/p&gt;
&lt;p&gt;El &amp;quot;truco&amp;quot; es conectarnos &lt;strong&gt;&lt;font color="#800000"&gt;NO&lt;/font&gt;&lt;/strong&gt; a la instancia &lt;font style="BACKGROUND-COLOR:#ffcc00;"&gt;.\MICROSOFT##SSEE&lt;/font&gt; como podríamos pensar y dónde no haríamos otra cosa que dar vueltas alrededor nuestra, sino a la instancia &lt;font style="BACKGROUND-COLOR:#ffcc00;"&gt;\\.\pipe\mssql$microsoft##ssee\sql\query&lt;/font&gt; con autenticación&lt;br /&gt;integrada de Windows.&lt;/p&gt;
&lt;p&gt;De esta forma, accederemos al contenido de esa instancia. !Yupi!.&lt;/p&gt;
&lt;p&gt;Ahora bien, una vez logrado esto (que puede tener o no utilidad para nosotros en un momento dado) el siguiente paso sería pasar el contenido de WSS 3.0, de MICROSOFT##SSEE a SQL Server 2005 Standard o superior, algo que parece simple,... o no... depende de como se mire.&lt;/p&gt;
&lt;p&gt;En este caso, he buscado un poquito por aquí un poquito por allí, y me he topado con una entrada muy útil que quiero compartir con todos vosotros por si os encontrais en un futuro un problema similar. En esta &lt;a class="" href="http://wss.asaris.de/sites/walsh/Lists/WSSv3%20FAQ/DispForm.aspx?ID=1144"&gt;entrada&lt;/a&gt; se explica paso a paso y muy clarito qué hacer para pasar WSS 3.0 de &lt;a class="" href="http://en.wikipedia.org/wiki/Windows_Internal_Database"&gt;Windows Internal Database&lt;/a&gt; (variante de Microsoft SQL Server 2005 Express Edition) a Microsoft SQL Server 2005 versión superior.&lt;/p&gt;
&lt;p&gt;Espero que le resulte a más de uno, a mí por lo menos, me ha salvado de peleas y muchas horas de trabajo extra delante del ordenador.&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=425" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Material del evento: Asentando las bases</title><link>http://andorradotnet.com/blogs/lfranco/archive/2008/12/30/material-del-evento-asentando-las-bases.aspx</link><pubDate>Tue, 30 Dec 2008 15:34:04 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:424</guid><dc:creator>lfranco</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ayer tuvimos el último evento del año en &lt;a href="http://andorradotnet.com/"&gt;AndorraDotNet&lt;/a&gt;. Mientras llegan las fotos que hicieron algunos de los asistentes, aprovecho para publicar el material del evento, tanto la presentación como los proyectos de ejemplo.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://andorradotnet.com/blogs/anug/image_296F1993.png"&gt;&lt;img title="image" height="184" alt="image" src="http://andorradotnet.com/blogs/anug/image_thumb_38CCBE66.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La presentación la encontraréis aquí:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Y la solución de Visual Studio aquí:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Gracias por todo y nos vemos pronto!&lt;/p&gt;
** crossposting desde el blog de Lluís Franco en geeks.ms **&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=424" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Grupo/default.aspx">Grupo</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/.NET/default.aspx">.NET</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/2008/default.aspx">2008</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Event/default.aspx">Event</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/AndorraDotNet/default.aspx">AndorraDotNet</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Material de l’event: Assentant les basses</title><link>http://andorradotnet.com/blogs/anug/archive/2008/12/30/material-de-l-event-assentant-les-basses.aspx</link><pubDate>Tue, 30 Dec 2008 09:23:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:422</guid><dc:creator>lfranco</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ahir varem tenir el darrer &lt;a href="http://andorradotnet.com/blogs/anug/archive/2008/12/23/nou-event-a-andorradotnet-assentant-les-bases.aspx" target="_blank"&gt;event&lt;/a&gt; de l’any a &lt;a href="http://andorradotnet.com/" target="_blank"&gt;AndorraDotNet&lt;/a&gt;. Mentre arriben les fotos que van fer alguns dels assistents, aprofitaré per publicar el material del event, tant la presentació com els projecte d’exemple.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://andorradotnet.com/blogs/anug/image_296F1993.png"&gt;&lt;img title="image" height="184" alt="image" src="http://andorradotnet.com/blogs/anug/image_thumb_38CCBE66.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La presentació la trobareu aquí:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qt5bna.bay.livefilestore.com/y1pyRzzWt20Q5RzUoG5bW8MCn9Ecr4998igZ8wmVyIvzZt04MA0mivBrgPH2Z7UFQR3o_FcraKhmSA/AndorraDotNet_Event4_AssentantBases%5B1%5D.pptx?download"&gt;http://qt5bna.bay.livefilestore.com/y1pyRzzWt20Q5RzUoG5bW8MCn9Ecr4998igZ8wmVyIvzZt04MA0mivBrgPH2Z7UFQR3o_FcraKhmSA/AndorraDotNet_Event4_AssentantBases%5B1%5D.pptx?download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I la solució de Visual Studio aquí:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qt5bna.bay.livefilestore.com/y1pyk_riPT9WoAu3h71trbE6i5k20geLWR3dhGWzVdik8JD_4anQ6VS0f1WCR-7FDIxt3SSZo41mzI/TestDemosAndorraDotNet.zip?download"&gt;http://qt5bna.bay.livefilestore.com/y1pyk_riPT9WoAu3h71trbE6i5k20geLWR3dhGWzVdik8JD_4anQ6VS0f1WCR-7FDIxt3SSZo41mzI/TestDemosAndorraDotNet.zip?download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Us recordo que la solució conté 3 projectes de tipus WinForms en C#, en la xerrada ens varem centrar sobre tot en el primer (TestGenerics) i varem veure tres quartes parts del segon (TestLINQToSQL). El darrer projecte sobre Entity Framework no estava acabat al 100% de forma que l’he buidat i ara no conté res. Si voleu executar el projecte de LINQ to SQL haureu de canviar la cadena de connexió del fitxer app.config i redirigir-lo al vostre servidor de SQL Server i la vostra BD NorthWind.&lt;/p&gt;
&lt;p&gt;Si teniu algun problema per descarregar-ho o per fer-ho funcionar envieu-me un correu o deixeu un comentari en aquest post. &lt;/p&gt;
&lt;p&gt;Fins aviat!&lt;/p&gt;&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=422" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/anug/archive/tags/Andorra/default.aspx">Andorra</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/Grup/default.aspx">Grup</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/.NET/default.aspx">.NET</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/Catal_26002300_224_3B00_/default.aspx">Catal&amp;#224;</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/Event/default.aspx">Event</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/2008/default.aspx">2008</category><category domain="http://andorradotnet.com/blogs/anug/archive/tags/Material/default.aspx">Material</category></item><item><title>10 cosas que me gustan de C# respecto a VB</title><link>http://andorradotnet.com/blogs/lfranco/archive/2008/12/23/10-cosas-que-me-gustan-de-c-respecto-a-vb.aspx</link><pubDate>Tue, 23 Dec 2008 22:44:53 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:421</guid><dc:creator>lfranco</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/pelea_0F4B4E51.jpg"&gt;&lt;img title="pelea" style="border-right:0px;border-top:0px;display:inline;margin:0px 10px 0px 0px;border-left:0px;border-bottom:0px;" height="244" alt="pelea" src="http://geeks.ms/blogs/lfranco/pelea_thumb_16F8D862.jpg" width="220" align="left" border="0" /&gt;&lt;/a&gt;Antes de empezar a leer este post, un aviso: En ningún modo pretendo crear polémica o abrir el viejo debate otra vez, si no más bien enumerar algunas cosillas que hacen que &lt;strong&gt;*yo*&lt;/strong&gt; me sienta más cómodo trabajando con C# que con VB, tanto a nivel de lenguaje como del propio editor. Lo remarco porque quiero que quede bien claro que es una opinión personal, ok? No se trata de comerle el coco a nadie…&lt;/p&gt;  &lt;p&gt;Algunas de estas cosillas ya las he compartido con algunos de vosotros en algún evento de los grupos de usuarios, o simplemente delante de unas cervezas (aquí la conversación suele tornarse más pasional y tiende a alargarse un poco), jejeje…, y a decir verdad pocas veces nos ponemos de acuerdo ¿eh &lt;a title="Guille" href="http://www.elguille.info/" target="_blank"&gt;agüelo&lt;/a&gt;?. Parece ser que antes de empezar a hablar cada cual ya se ha posicionado y de aquí no nos movemos… lo cual es hasta cierto punto normal. Uno sabe con qué herramienta se encuentra más cómodo, aunque pueda usar ambas de forma indistinta.&lt;/p&gt;  &lt;p&gt;De hecho &lt;u&gt;he tirado más líneas de código con VB que con cualquier otro lenguaje&lt;/u&gt;, y eso que empecé en este mundillo con C y posteriormente con C++, para luego pasar a los lenguajes ‘más productivos’ como Delphi o finalmente VB en sus primeras versiones. No fue hasta 2002 y las primeras versiones de .NET que volví a usar la vieja sintaxis del punto y coma. De modo que VB en-todas-sus-variedades me es muy querido, y debo reconocerle sus ventajas… Sin embargo, codificar, al igual que leer o hablar, es algo que siempre haces mejor o te sientes más cómodo en uno de los lenguajes que dominas, y aquí reconozco que C# (como antes de conocerlo lo fue Java) es mi predilecto. Siempre que &lt;strong&gt;YO&lt;/strong&gt; decido el lenguaje a utilizar en un nuevo proyecto, lo escojo, y en caso contrario intento convencer a la otra persona (ya sea compañero, cliente, etc.).&lt;/p&gt;  &lt;p&gt;Os enumero a continuación una lista de cosas que me gustan de C#, o más bien que no me gustan cuando al cabo de un tiempo de trabajar con C#, me pongo a codificar con VB. No siguen ningún orden ni patrón y las voy a ir enumerando conforme se me vayan ocurriendo:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;1) Escribo menos código &amp;amp;&amp;amp; código más limpio:&lt;/u&gt;&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;En este punto, un desarrollador de VB acostumbra a decirme que esto no es cierto. Que si bien la sintaxis de VB es en alguno puntos ‘rocambolesca’ es para aclarar, y además el propio editor de código se encarga de escribirlo. Sin embargo tengo comprobado que con el editor de C# en la gran mayoría de las situaciones tecleo menos para decir lo mismo, y queda más claro (al menos para mí). Ojo! Es importante destacar que en ningún momento me mueve el afán de teclear menos, sino que el código resultante sea más legible. Comparemos los siguientes ejemplos: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;u&gt;Declarar una variable:&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; x = 5;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; Int = 5&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Bloques de código (ends por todas partes :-P).&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;(Nombre == &lt;span style="color:#006080;"&gt;&amp;quot;Pepe&amp;quot;&lt;/span&gt; &amp;amp;&amp;amp; Sueldo &amp;lt;= 500)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;...&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;If&lt;/span&gt; Nombre = &lt;span style="color:#006080;"&gt;&amp;quot;Pepe&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AndAlso&lt;/span&gt; Sueldo &amp;lt;= 500 &lt;span style="color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;...&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; If&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Operador AddressOf&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;Thread t = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Thread(CountSheep);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; t &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; Thread(&lt;span style="color:#0000ff;"&gt;AddressOf&lt;/span&gt; CountSheep)&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Expresiones lambda:&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;Func&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;, Func&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; mult = (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; x) =&amp;gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; y) =&amp;gt; x * y;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; mult &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; Func(Of &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;, Func(Of &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;)) = _    &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt;(x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt;(y &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;) x * y&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Implementar una interfaz (no es preciso Implements):&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; ITest &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;{ &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; getValue();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Test : ITest { &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; getValue() &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    { &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        Random r = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Random(); &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; r.Next().ToString(); &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    } &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Interface&lt;/span&gt; ITest    &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt; getValue() &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Interface&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Class&lt;/span&gt; Test    &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Implements&lt;/span&gt; ITest     &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt; getValue() &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Implements&lt;/span&gt; ITest.getValue&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; r &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; Random&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Return&lt;/span&gt; r.&lt;span style="color:#0000ff;"&gt;Next&lt;/span&gt;().ToString()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Podriamos seguir con Overridable, Overrides y unos cuantos más... Pero mejor vamos al siguiente punto que si no, no acabo el post hoy… :-)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2) No más underscores!&lt;/u&gt;&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Cuantas veces he tenido que escuchar “&lt;em&gt;no tengo porque terminar cada línea de código con un punto y coma!&lt;/em&gt;”. Pues precisamente, el delimitador de línea es lo que permite que en los lenguajes derivados del viejo y bueno ‘C’ no tengamos que hacer algo tan antinatural como partir las líneas de código con underscores (_). Además suele pasar que es una de las cosas que olvido con mayor rapidez, y cada vez que escribo en VB una query con LINQ acabo por soltar un “AAAAARGH!!! OTRA VEZ!!!”. 

  &lt;br /&gt;

  &lt;br /&gt;&lt;strong&gt;&lt;u&gt;C#&lt;/u&gt;&lt;/strong&gt; 

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;List&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt; nums = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;[] { 1, 2, 3, 4 });&lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;var mynums = from n &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; nums&lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;             &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; n &amp;lt; 5&lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;             orderby n&lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;             select n;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;VB:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; nums &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; List(Of &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;)(&lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;() {1, 2, 3, 4}) &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; mynums = From n &lt;span style="color:#0000ff;"&gt;In&lt;/span&gt; nums _ &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    Where n &amp;lt; 5 _ &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    Order By n _ &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Select&lt;/span&gt; n &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3) Matrices y Listas: [] en lugar de ():&lt;/u&gt;&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Cuando estoy picando o leyendo código me gusta saber con exactitud si estoy llamando a una función, a una propiedad u obteniendo el valor de una matriz o colección. Precisamente por eso prefiero usar corchetes en lugar de paréntesis para acceder a los miembros de una matriz o lista. En el ejemplo siguiente en la llamada a nums(i) en VB, podría ser tanto un método como una matriz, como una propiedad que devuelve una matriz o lista: 

  &lt;br /&gt;

  &lt;br /&gt;&lt;strong&gt;&lt;u&gt;C#&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;List&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt; nums = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&amp;gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;[] { 1, 2, 3, 4 });&lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;Console.WriteLine(nums[2].ToString());&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB: 
      &lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; nums &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; List(Of &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;)(&lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;() {1, 2, 3, 4}) &lt;/pre&gt;

  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;Console.WriteLine(nums(2).ToString()) &lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4) Parámetros de salida (out):&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tipos de parámetro de salida. Estos son muy parecidos a los parámetros por referencia (ref), pero no necesitan ser inicializados. Resultan particularmente útiles en algoritmos recursivos. Visual Basic no dispone de nada equivalente, aunque si permite el paso de valores por referencia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Method(&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    i = 44;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    Method(&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5) Los códigos de escape y las cadenas verbatim:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Otra cosa que me molesta es que VB no reconoce los &lt;a href="http://msdn.microsoft.com/es-es/library/aa691087(VS.71).aspx" target="_blank"&gt;carácteres de escape&lt;/a&gt; contenidos en un string. Esto es particularmente útil cuando deseamos mostrar un retorno de línea ‘\n’ o una tabulación ‘\t’ dentro de una cadena. En Visual Basic hay que recorrer a la concatenación de Environment.NewLine o artimañas parecidas como concatenar directamente el carácter. Por ejemplo el código siguiente se muestra así:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;MessageBox.Show(&lt;span style="color:#006080;"&gt;&amp;quot;hola\nque\ntal&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://geeks.ms/blogs/lfranco/MsgBox1_08BCF023.png"&gt;&lt;img title="MsgBox1" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="136" alt="MsgBox1" src="http://geeks.ms/blogs/lfranco/MsgBox1_thumb_03DA3C67.png" width="106" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/MsgBox2_3397E4E6.png"&gt;&lt;img title="MsgBox2" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="112" alt="MsgBox2" src="http://geeks.ms/blogs/lfranco/MsgBox2_thumb_3C877725.png" width="107" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;En este punto más de uno se preguntará ¿y que pasa si no quiero tratar estos caracteres de escape como especiales?, ¿o si quiero mostrar una ruta de acceso que contiene varios caracteres ‘\’? Bien, para ello tenemos varias alternativas: Podemos anteponer un carácter ‘\’ a todo símbolo que deseemos mostrar literalmente o podemos usar &lt;a href="http://msdn.microsoft.com/es-es/library/aa691090(VS.71).aspx" target="_blank"&gt;cadenas verbatim&lt;/a&gt; (también llamado ‘literal de cadena textual’):&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;MessageBox.Show(&lt;span style="color:#006080;"&gt;&amp;quot;C:\\Windows\\system32\\Calc.exe&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;MessageBox.Show(&lt;span style="color:#006080;"&gt;@&amp;quot;hola\nque\ntal&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Las cadenas verbatim van incluso un poco más allá y permiten incluso poder partir una cadena en varias líneas, lo que clarifica en mucho el código:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;MessageBox.Show(&lt;span style="color:#006080;"&gt;@&amp;quot;SELECT O.OrderID, O.CustomerID, O.EmployeeID, &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;O.OrderDate, O.RequiredDate, O.ShippedDate,&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;O.ShipVia, O.Freight, O.ShipName, O.ShipAddress,&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;O.ShipCity, O.ShipRegion, O.ShipPostalCode,&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;O.ShipCountry, C.CompanyName, C.Address,&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;C.City, C.Region, C.PostalCode, C.Country&lt;/font&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;FROM dbo.Customers AS C&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;INNER JOIN dbo.Orders AS O&lt;/font&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;                &lt;font color="#008080"&gt;ON C.CustomerID = O.CustomerID&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;6) Propiedades autogeneradas:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Algo tan sencillo como crear una propiedad para una clase, lo es todavía más en C#, ya que permite el uso de propiedades autogeneradas. Esto hace que el compilador maneje internamente una variable privada a nivel de clase para almacenar el valor, quedando esta parte oculta al desarrollador. Esta característica estará disponible en la próxima versión de Visual Basic, pero de momento todavía tenemos que conformarnos con representarlo así:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C#:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Foo&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; id { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; name { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Class&lt;/span&gt; Foo &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; _id &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Property&lt;/span&gt; id() &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Get&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            &lt;span style="color:#0000ff;"&gt;Return&lt;/span&gt; _id &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Get&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Set&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; value &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;) &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;            _id = value &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Set&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Property&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; _name &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Property&lt;/span&gt; name() &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Get&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;            &lt;span style="color:#0000ff;"&gt;Return&lt;/span&gt; _name &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Get&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;Set&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; value &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt;) &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            _name = value &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Set&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;    &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Property&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;7) Refactoring:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hoy en día, al igual que el uso de pruebas unitarias, empieza a ser impensable no refactorizar el código para una mejor comprensión, que repercute en un mejor índice de mantenibilidad (o &lt;em&gt;Maintainability index&lt;/em&gt;, vaya usted a saber cómo se traduce) del código. Bien, pues el menú ‘Refactor’ del editor de C# no aparece en VB. Y la única información acerca de refactorizar el código VB nos enlaza con un &lt;a href="http://msdn.microsoft.com/en-us/vbasic/bb693327.aspx" target="_blank"&gt;Add-In de terceros&lt;/a&gt;, la cual a decir verdad es una gran utilidad. Lo sé, porque he usado la versión PRO de este producto durante bastante tiempo. Pero el hecho es que Visual Studio no incorpora ninguna utilidad ‘de fábrica’ para refactorizar el código, lo que no deja de ser sorprendente…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/RefactorMenu_6C451FA4.png"&gt;&lt;img title="RefactorMenu" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="174" alt="RefactorMenu" src="http://geeks.ms/blogs/lfranco/RefactorMenu_thumb_071145B1.png" width="255" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;8) &lt;/u&gt;&lt;/strong&gt;&lt;strong&gt;&lt;u&gt;Posibilidad de desactivar ‘Strict on’:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Al ser VB la evolución de un lenguaje no tan ‘estricto’ como C#, nos ofrece la posibilidad de desactivar la opción Strict On, y de este modo dejar que el compilador se encargue de realizar muchas conversiones implícitas. Pero lo más peligroso de todo es que la opción viene desactivada ‘de fábrica’ y en cambio no conozco ningún buen programador de VB (que los hay, y muchos) que no sea lo primero que active. Muchos errores en tiempo de ejecución podrían ser evitados si el propio compilador nos obligase a codificar correctamente, en lugar de actual de este modo más ‘relajado’:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB (con Option Strict Off):&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; s &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;s = DateTime.Today&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;VB (con Option Strict On):&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; s &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;s = DateTime.Today.ToString()&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Observar que con Option Strict activado, el compilador no permite asignar una fecha a una variable de tipo cadena (con razón!), de modo que para poder compilar debemos realizar una conversión explícita.&lt;/p&gt;

&lt;p&gt;Recomiendo dar un vistazo a este artículo de coding horror: 
  &lt;br /&gt;&lt;a title="http://www.codinghorror.com/blog/archives/000355.html" href="http://www.codinghorror.com/blog/archives/000355.html"&gt;http://www.codinghorror.com/blog/archives/000355.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;9) Microsoft.VisualBasic:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Son legión los programadores que provienen de versiones anteriores de .NET (6 o anteriores), de modo que para facilitarles el camino los proyectos de VB incorporan el espacio de nombres Microsoft.VisualBasic, el cual a su vez incorpora muchas de las funciones de estas versiones anteriores. El hecho de incorporarlas no es un error en sí, lo malo es que estas funciones tienen su equivalente en el modelo de objetos del framework, y si seguimos usando estas funciones ‘antiguas’ no aprenderemos las nuevas, y el día en que debamos trabajar con otro lenguaje del Framework (que no tiene porque ser C#, hay unos cuantos más :-P) nos encontraremos con que estamos usando funciones propias de VB y no conoceremos su equivalente.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/ObjectExplorer_2BA563E6.png"&gt;&lt;img title="ObjectExplorer" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="441" alt="ObjectExplorer" src="http://geeks.ms/blogs/lfranco/ObjectExplorer_thumb_1ECD9E79.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Por ejemplo, en lugar de llamar a la función Len para averiguar el número de caracteres de una cadena, es mejor usar el método Lenght de la clase String, lo mismo para Trim(), y todavía es más flagrante con Mid(), que equivale al método SubString del objeto String:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; n &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt; = Len(DateTime.Now.ToLongDateString)    &lt;span style="color:#008000;"&gt;&amp;#39;NO&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; n &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt; = DateTime.Now.ToLongDateString.Lenght  &lt;font color="#008000"&gt;&amp;#39;SI&lt;/font&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;No son pocos los esfuerzos de muchos compañeros, fantásticos programadores como &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/10/31/c-243-mo-eliminar-la-refencia-al-ensamblado-microsoft-visualbasic-dll-en-nuestros-proyectos.aspx" target="_blank"&gt;Jorge Serrano&lt;/a&gt; o &lt;a href="http://msdn.microsoft.com/es-es/library/bb972193.aspx" target="_blank"&gt;Harvey Triana&lt;/a&gt; para eliminar esta librería de nuestras aplicaciones, de modo que la recomendación siempre acaba siendo “no la uses, no la mires, haz como si no estuviera…”. Por cierto, os recomiendo una lectura de ambos artículos.&lt;/div&gt;

&lt;div&gt;&lt;a title="http://geeks.ms/blogs/jorge/archive/2008/10/31/c-243-mo-eliminar-la-refencia-al-ensamblado-microsoft-visualbasic-dll-en-nuestros-proyectos.aspx" href="http://geeks.ms/blogs/jorge/archive/2008/10/31/c-243-mo-eliminar-la-refencia-al-ensamblado-microsoft-visualbasic-dll-en-nuestros-proyectos.aspx"&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;&lt;u&gt;10) Hay más, y no se por cual decidirme…&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;

&lt;p&gt;Hay muchas otras cosas que se quedan en el tintero, porque algunas de ellas son demasiado largas (como el manejo de eventos), y otras no son precisamente de uso diario, como la ejecución de código no seguro (unsafe). Pero estaremos de acuerdo en que la mayoría de las novedades aparecen primero para C# (inicializadores de colecciones, propiedades autogeneradas, soporte para expresiones lambda ‘de verdad’, etc.) e incluso los compiladores de C# del proyecto MoNo van siempre por delante de los de VB. Aunque este último punto reconozco que no es demasiado importante… o sí?&lt;/p&gt;

&lt;p&gt;En fin, vaya chapa me ha salido! Pero por lo menos ahora tengo una lista de cosas para cuando me pregunten “¿porque te gusta más C# que VB?”.&lt;/p&gt;

&lt;p&gt;Un saludo desde Andorra,&lt;/p&gt;
** crossposting desde el blog de Lluís Franco en geeks.ms **&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=421" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/VB/default.aspx">VB</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/.NET/default.aspx">.NET</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Frikadas/default.aspx">Frikadas</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://andorradotnet.com/blogs/lfranco/archive/tags/Comparativa/default.aspx">Comparativa</category></item><item><title>Nou event a AndorraDotNet – Assentant les bases</title><link>http://andorradotnet.com/blogs/anug/archive/2008/12/23/nou-event-a-andorradotnet-assentant-les-bases.aspx</link><pubDate>Tue, 23 Dec 2008 14:26:14 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:420</guid><dc:creator>lfranco</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Confirmat! El proper dilluns dia 29 de Desembre farem el darrer event de l’any a &lt;a href="http://andorradotnet.com/" target="_blank"&gt;AndorraDotNet&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;En questa ocasió xerrarem sobre com ha evolucionat el Framework, des de les primeres versions 1.0 i 1.1 fins a la actual 3.5, i com aquestes millores ens ajuden als desenvolupadors a fer aplicacions de qualitat.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://andorradotnet.com/blogs/anug/image_25A7D2EF.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="412" alt="image" src="http://andorradotnet.com/blogs/anug/image_thumb_70C27FC4.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;La idea no es fer una presentació de ppts de dues hores, si no presentar exemples de codi (que es el que ens agrada a tots) i mostrar com es feien les coses amb els diferents Frameworks: Com s’ordenava una col·lecció amb el FWK 1.1, que va significar la aparició de Generics en el FWK 2.0, i que ens ha aportat per poder construir amb LINQ amb el FWK 3.5. O sigui, una xerrada força dinàmica os esperem poder contestar les preguntes que surgeixin ‘al vol’.&lt;/p&gt;  &lt;p&gt;Com ja es habitual la xerrada es farà a les instal·lacions de &lt;a href="http://fimarge.ad" target="_blank"&gt;FIMARGE&lt;/a&gt; al centre de negoci MONTCLAR, al carrer Bonaventura armengol nº 10, Bloc 1 5º planta, cap a les 18h30, i durarà un màxim de dues hores. La entrada és lliure (mentre no tinguem problema d’aforament) i al acabar, aquells que s’apuntin anirem a fer unes tapes i unes canyes, per celebrar el nostre petit sopar de Nadal :-D.&lt;/p&gt;  &lt;p&gt;Enllaç a Google Maps per que ningú es perdi:    &lt;br /&gt;&lt;a href="http://maps.google.com/maps?hl=es&amp;amp;ie=UTF8&amp;amp;ll=42.508148,1.529039&amp;amp;spn=0.002887,0.005&amp;amp;t=h&amp;amp;z=18"&gt;http://maps.google.com/maps?hl=es&amp;amp;ie=UTF8&amp;amp;ll=42.508148,1.529039&amp;amp;spn=0.002887,0.005&amp;amp;t=h&amp;amp;z=18&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Us esperem!&lt;/p&gt;&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=420" width="1" height="1"&gt;</description></item><item><title>Microsoft 30 años más tarde...</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/21/microsoft-30-a-241-os-m-225-s-tarde.aspx</link><pubDate>Mon, 22 Dec 2008 00:57:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:418</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Microsoft ha cumplido recientemente 30 años en el mercado y lo han querido celebrar de una forma muy especial.&lt;/p&gt;
&lt;p&gt;A lo largo de todo este tiempo, han ocurrido muchas cosas respecto al Software y la evolución del Hardware, pero lo que ha ocurrido también es que la gente que fundó la compañía ha entrado en años.&lt;/p&gt;
&lt;p&gt;El caso es que los primeros empleados de Microsoft se hicieron una fotografía... ¿alguien recuerda esta imagen?.&lt;/p&gt;
&lt;p&gt;&lt;img height="410" alt="" src="http://news.softpedia.com/images/news2/The-Return-of-the-Original-Microsoft-Geek-Icons-30-Years-Later-2.jpg" width="559" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;En esta foto,&amp;nbsp;de izquierda a derecha:&lt;br /&gt;Arriba: Steve Wood, Bob Wallace, y Jim Lane.&lt;br /&gt;En el medio: Bob O&amp;#39;Rear, Bob Greenberg, Marc McDonald, y Gordon Letwin.&lt;br /&gt;Abajo: Bill Gates, Andrea Lewis, Marla Wood, y Paul Allen.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Miriam Lubow no estuvo el día de la fotografía o se la perdió... no sé que pasó, pero no salió en la famosa foto.&lt;/p&gt;
&lt;p&gt;El caso es que la gente de esa foto ha querido recordar esos 30 años... y se han animado a hacer una segunda fotografía, más actualizada:&lt;/p&gt;
&lt;p&gt;&lt;img height="400" alt="" src="http://news.softpedia.com/images/news2/The-Return-of-the-Original-Microsoft-Geek-Icons-30-Years-Later-3.jpg" width="600" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;De izquierda a derecha:&lt;br /&gt;Arriba: Bob O&amp;#39;Rear, Steve Wood, Bob Greenberg, Marc McDonald, Gordon Letwin y Jim Lane.&lt;br /&gt;&lt;a class="" href="http://es.wikipedia.org/wiki/Bob_Wallace"&gt;Bob Wallace&lt;/a&gt; que dejó Microsoft en el año 1983, falleció a causa de una neumonía en el año 2002, y para quien no lo sepa, fue el creador del término Shareware.&lt;br /&gt;Abajo: Bill Gates, Andrea Lewis, Miriam Lubow, Marla Wood, y Paul Allen.&lt;/p&gt;
&lt;p&gt;Cuanto menos curioso ¿no creeis?.&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=418" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/General/default.aspx">General</category></item><item><title>Simulando la inicialización de colecciones de Visual Basic 10 con Visual Basic 9</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/12/simulando-la-inicializaci-243-n-de-colecciones-de-visual-basic-10-con-visual-basic-9.aspx</link><pubDate>Fri, 12 Dec 2008 15:30:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:414</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="63" alt="" src="http://i.microsoft.com/global/En/us/PublishingImages/SLWindowPane/VS2008_T.png" width="63" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A colación de una &lt;a class="" href="http://geeks.ms/blogs/elbruno/archive/2008/12/11/vsts2010-inicializando-collecciones-en-visual-basic-10.aspx"&gt;entrada de Bruno&lt;/a&gt; acerca de la nueva característica de Visual Studio 10 y en concreto de Visual Basic 10 donde podemos inicializar colecciones tipadas con Visual Basic 10, me surgió la duda casi de inmediato de si en Visual Basic 9 podríamos simular este mismo mecanismo.&lt;/p&gt;
&lt;p&gt;La respuesta es sí.&lt;/p&gt;
&lt;p&gt;Lo que ocurre, es que la forma en la que lo hace Visual Basic 10 es más limpia y nos ahorra el escribir líneas de código, aunque con Visual Basic 9, tampoco es que tengamos que escribir muchas más líneas de código, tan solo una conversión por medio.&lt;/p&gt;
&lt;p&gt;El ejemplo que nos proponía Bruno, partía del ejemplo básico y cuyo código sería el siguiente:&lt;/p&gt;&lt;span style="COLOR:#000000;"&gt;
&lt;div class="code" style="BORDER-RIGHT:1px solid;PADDING-RIGHT:0.4em;BORDER-TOP:1px solid;PADDING-LEFT:0.4em;FONT-SIZE:8pt;PADDING-BOTTOM:0.4em;BORDER-LEFT:1px solid;PADDING-TOP:0.4em;BORDER-BOTTOM:1px solid;FONT-FAMILY:Tahoma;BACKGROUND-COLOR:#f0f0f0;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;listNames&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;New&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;List(&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Of&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&lt;br /&gt;listNames.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&lt;br /&gt;listNames.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Jose&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&lt;br /&gt;listNames.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Valentino&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;
&lt;p&gt;Respecto a la novedad incluida en Visual Basic 10, el código anterior se podría simplificar por este otro:&lt;/p&gt;
&lt;div class="code" style="BORDER-RIGHT:1px solid;PADDING-RIGHT:0.4em;BORDER-TOP:1px solid;PADDING-LEFT:0.4em;FONT-SIZE:8pt;PADDING-BOTTOM:0.4em;BORDER-LEFT:1px solid;PADDING-TOP:0.4em;BORDER-BOTTOM:1px solid;FONT-FAMILY:Tahoma;BACKGROUND-COLOR:#f0f0f0;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;New&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;List(&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Of&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&amp;nbsp;From&amp;nbsp;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Jose&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Valentino&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Pero... ¿cómo podríamos hacer esto mismo con Visual Basic 9?... porque en realidad se puede hacer.&lt;/p&gt;
&lt;p&gt;La equivalencia en Visual Basic 9 pasa en este ejemplo por utilizar LINQ.&lt;/p&gt;
&lt;p&gt;El código equivalente de Visual Basic 9 ó Visual Basic 2008 a la nueva característica de Visual Basic 10 sería el siguiente:&lt;/p&gt;
&lt;div class="code" style="BORDER-RIGHT:1px solid;PADDING-RIGHT:0.4em;BORDER-TOP:1px solid;PADDING-LEFT:0.4em;FONT-SIZE:8pt;PADDING-BOTTOM:0.4em;BORDER-LEFT:1px solid;PADDING-TOP:0.4em;BORDER-BOTTOM:1px solid;FONT-FAMILY:Tahoma;BACKGROUND-COLOR:#f0f0f0;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;personas()&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;=&amp;nbsp;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Jose&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Valentino&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;listNames&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;List(&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Of&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;)&amp;nbsp;=&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;From&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;persona&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;In&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;personas&amp;nbsp;_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Select&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;persona).ToList&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Finalmente, para consumir el contenido, podría servir esta pequeña instrucción:&lt;/p&gt;
&lt;div class="code" style="BORDER-RIGHT:1px solid;PADDING-RIGHT:0.4em;BORDER-TOP:1px solid;PADDING-LEFT:0.4em;FONT-SIZE:8pt;PADDING-BOTTOM:0.4em;BORDER-LEFT:1px solid;PADDING-TOP:0.4em;BORDER-BOTTOM:1px solid;FONT-FAMILY:Tahoma;BACKGROUND-COLOR:#f0f0f0;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;elementos&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;For&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Each&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;elemento&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;In&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;nbsp;listNames&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementos&amp;nbsp;&amp;amp;=&amp;nbsp;elemento&amp;nbsp;&amp;amp;&amp;nbsp;Environment.NewLine&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;Next&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;MessageBox.Show(elementos)&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Como podemos ver en este ejemplo/demostración, a veces podemos &amp;quot;simular&amp;quot; alguno de los comportamientos o características nuevas que se incorporarán posiblemente a la versión final de Visual Basic 10.&lt;/p&gt;
&lt;p&gt;Es... otra forma de hacer las cosas, ni mejor ni pero, sino simplemente otra forma diferente.&lt;/p&gt;
&lt;p&gt;Espero que ayude.&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=414" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Basic+2008/default.aspx">Visual Basic 2008</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/.NET+Framework+4.0/default.aspx">.NET Framework 4.0</category></item><item><title>Chrome se hace mayor de edad</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/12/chrome-se-hace-mayor-de-edad.aspx</link><pubDate>Fri, 12 Dec 2008 05:00:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:415</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="55" alt="" src="http://www.google.com/chrome/intl/es/images/logo_sm.jpg" width="150" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mi versión 0.4.154.29 de Google Chrome ha pasado a ser ahora 1.0.154.36... vamos... que han pasado directamente de la 0.4 a la 1.0.&lt;/p&gt;
&lt;p&gt;Quizás la crítica de la palabra &amp;quot;Beta&amp;quot; que perdura en muchos de sus productos de forma casi eterna, haya hecho que Google haya decidido dar ese paso hacia adelante.&lt;/p&gt;
&lt;p&gt;De hecho, &lt;a class="" href="http://www.google.es/chrome"&gt;Google Chrome&lt;/a&gt; se ha hecho mayor, y ahora es un navegador más robusto.&lt;/p&gt;
&lt;p&gt;El caso es que en el mercado de los navegadores Web tenemos a varios aspirantes, algunos de ellos con títulos mundiales en sus vitrinas. Microsoft Internet Explorer, Firefox, Google Chrome, Opera&amp;nbsp;y Safari.&lt;/p&gt;
&lt;p&gt;Google Chrome llegó con fuerza, y tras una serie de errores detectados y subsanados, el navegador Web se ha ido haciendo más robusto.&lt;/p&gt;
&lt;p&gt;Seguramente la gente de Google no ha obtenido errores graves en su navegador y ha decidido cambiar la versión de 0.4 a 1.0.&lt;/p&gt;
&lt;p&gt;Tiempo al tiempo. Iremos viendo que tal. :-)&lt;/p&gt;
Cross Posted from Jorge Serrano - MVP Visual Developer - VB&lt;img src="http://andorradotnet.com/aggbug.aspx?PostID=415" width="1" height="1"&gt;</description><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/General/default.aspx">General</category><category domain="http://andorradotnet.com/blogs/jorge/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Utilidad gratuita :: Lookup.NET 1.0 - en PowerShell</title><link>http://andorradotnet.com/blogs/jorge/archive/2008/12/10/utilidad-gratuita-lookup-net-1-0-en-powershell.aspx</link><pubDate>Wed, 10 Dec 2008 21:00:00 GMT</pubDate><guid isPermaLink="false">b0fcac78-2c75-4423-8c0a-4c16f1829272:410</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="63" alt="" src="http://i.microsoft.com/global/En/us/PublishingImages/SLWindowPane/VS2008_T.png" width="63" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;El otro día, publiqué una pequeña herramienta o utilidad denominada &lt;a class="" href="http://geeks.ms/blogs/jorge/archive/2008/12/07/utilidad-gratuita-lookup-net-1-0.aspx"&gt;Lookup.NET 1.0 desarrollada en Microsoft .NET Framework 2.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esta herramienta tiene como propósito,&amp;nbsp;obtener las versiones y Service Packs de Microsoft .NET Framework instalados en las máquinas cliente.&lt;/p&gt;
&lt;p&gt;Ante los comentarios recibidos, decidí en un primer momento publicar el código fuente de la utildiad, pero creo más sensato escribir un script en &lt;a class="" href="http://blogs.msdn.com/powershell/"&gt;Microsoft PowerShell&lt;/a&gt; para realizar las mismas acciones, de forma que quede todo lo más abierto posible.&lt;/p&gt;
&lt;p&gt;Como veréis, la comprobación solo se hace a nivel del registro de Windows, se extraen los valores y se muestran en pantalla.&lt;/p&gt;
&lt;p&gt;A continuación se indica el&amp;nbsp;script de PowerShell utilizado.&lt;/p&gt;
&lt;p&gt;&lt;font face="tahoma,arial,helvetica,sans-serif" size="2"&gt;Script PowerShell (&lt;font color="#0000ff"&gt;LookupDotNetVersions.ps1&lt;/font&gt;):&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;table class="" style="BORDER-RIGHT:gray 1px dotted;BORDER-TOP:gray 1px dotted;BORDER-LEFT:gray 1px dotted;BORDER-BOTTOM:gray 1px dotted;BORDER-COLLAPSE:collapse;" cellspacing="0" cellpadding="10" bgcolor="#f2f1ee"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="code" style="FONT-SIZE:8pt;FONT-FAMILY:Tahoma;"&gt;&lt;span style="COLOR:#000000;"&gt;&lt;font color="#808000"&gt;################################################################&lt;br /&gt;# PowerShell Source File -- Created by Jorge Serrano&lt;br /&gt;# NAME: LookupDotNetVersions.ps1&lt;br /&gt;# PRODUCT NAME: Lookup.NET 1.0&lt;br /&gt;#&lt;br /&gt;# AUTHOR BLOG: http://geeks.ms/blogs/jorge/&lt;br /&gt;#&lt;br /&gt;# AUTHOR: Jorge Serrano, Visual Basic MVP&lt;br /&gt;# DATE : 10/12/2008&lt;br /&gt;#&lt;br /&gt;# COMMENT: Script for get the .NET Framework version installed&lt;br /&gt;# in the system with their SP versions.&lt;br /&gt;#&lt;br /&gt;# KEYWORDS: PowerShell, Registry&lt;br /&gt;################################################################&lt;/font&gt;&lt;br /&gt;&lt;font color="#808000"&gt;#Show-LookupDotNetVersions.ps1&lt;br /&gt;# Path with the information of the .NET Framework versions&lt;br /&gt;&lt;/font&gt;$path= &amp;quot;HKLM:\Software\Microsoft\Net Framework Setup\NDP&amp;quot;&lt;br /&gt;&lt;font color="#808000"&gt;# We write a blank line intentionally - the proposal is make it easier to read&lt;br /&gt;&lt;/font&gt;Write-Host `n&lt;br /&gt;&lt;font color="#808000"&gt;# First all, we test if the regedit label exists&lt;br /&gt;&lt;/font&gt;if (-not (Test-Path $path))&lt;br /&gt;{&lt;br /&gt;Write-Host &amp;quot;Some of the .NET Framework versions haven&amp;#39;t installed in this machine&amp;quot;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;Write-Host &amp;quot;.NET Framework versions installed in this system&amp;quot;&lt;br /&gt;Write-Host &amp;quot;================================================&amp;quot;&lt;br /&gt;Write-Host &amp;quot;&amp;quot;&lt;br /&gt;$items = get-ChildItem $path&lt;br /&gt;foreach ($anotherPath in $items)&lt;br /&gt;{&lt;br /&gt;&lt;font color="#808000"&gt;# We get the SP version of .NET Framework&lt;br /&gt;&lt;/font&gt;$valueSPVersion = Get-ItemProperty ($anotherPath.name -replace(&amp;quot;HKEY_LOCAL_MACHINE&amp;quot;, &amp;quot;HKLM:&amp;quot;))&lt;br /&gt;&lt;font color="#808000"&gt;# We write the information with tab command (formatting the output)&lt;br /&gt;&lt;/font&gt;if (($anotherPath.name -replace(&amp;quot;HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Net Framework Setup\\NDP\\&amp;quot;, &amp;quot;&amp;quot;)).Length -lt 5)&lt;br /&gt;{&lt;br /&gt;$SPinformation = &amp;quot;`t&amp;quot; + &amp;quot;`t&amp;quot; + &amp;quot;(SP&amp;quot; + $valueSPVersion.SP + &amp;quot;)&a