<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Indalcasa &#187; Visual Basic .Net</title>
	<atom:link href="http://www.indalcasa.com/category/programacion/visual-basic-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.indalcasa.com</link>
	<description>Un blog de tecnologia</description>
	<lastBuildDate>Thu, 02 Sep 2010 00:34:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Descodificar Quoted Printable para leer correos de GMail en Visual Basic</title>
		<link>http://www.indalcasa.com/programacion/visual-basic-net/descodificar-quoted-printable-para-leer-correos-de-gmail-en-visual-basic/</link>
		<comments>http://www.indalcasa.com/programacion/visual-basic-net/descodificar-quoted-printable-para-leer-correos-de-gmail-en-visual-basic/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 23:03:40 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[visual basic]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=553</guid>
		<description><![CDATA[Un amigo esta realizando un proyecto en Visual Basic .Net, que entre otras cosas se conecta a GMail para recibir correos e introducirlos en una base de datos para mostrarlos en un panel de administración. Hasta aquí todo normal, el problema viene cuando en los correos utiliza caracteres, que vamos a llamar extraños, como tildes [...]]]></description>
			<content:encoded><![CDATA[<p>Un amigo esta realizando un proyecto en <strong>Visual Basic .Net</strong>, que entre otras cosas se conecta a <strong>GMail</strong> para recibir correos e introducirlos en una base de datos para mostrarlos en un panel de administración. Hasta aquí todo normal, el problema viene cuando en los correos utiliza caracteres, que vamos a llamar extraños, como <strong>tildes</strong> por ejemplo. Cuando recibimos por código un <strong>mail</strong> que por ejemplo contenía la cadena "conexión", este texto no se nos devuelve así, sino que nos devolvería "conexi=F3n" y he aqui el problema, ya que esto no es <strong>codificación</strong> normal de <strong>UTF-8 </strong>a <strong>ASCII</strong> o similares sino que es completamente diferente.</p>
<p>Los servidores de correo utilizan protocolos bastante antiguos, en los que todo se basta en texto. Para separar encabezados se utilizan saltos de linea tipo "\r\n" o "\n" y por ejemplo para adjuntar archivos hay que declarar una marca y decirle que el contenido del archivo esta entre marca y marca. Como no, todo esta basado en <strong>texto ASCII</strong> por lo que los caracteres extraños, letras con acento, eñes y similares, suelen encontrarse en una <strong>codificación</strong> que se llama <strong>"Quoted printable"</strong>.</p>
<p><strong>Quoted Printable</strong> o simplemente acortado <strong>QP</strong> es un <strong>sistema de codificación de 8 bits compatible con ASCII</strong> que basa su <strong>codificación de caracteres extraños</strong> en un formato de un símbolo igual seguido de 2 posiciones <strong>hexadecimales</strong>. Se rige por el <strong>estándar RFC-1345</strong>. Aunque algunos lenguajes traen incorporado por defecto funciones o librerías para <strong>codificación y descodificación de caracteres</strong>, <strong>.Net</strong> no tiene nada para <strong>descodificar</strong> este tipo de <strong>codificación</strong>. A continuación os mostrare un ejemplo de <strong>función de Visual Basic</strong> para la <strong>descodificación</strong> de estos caracteres, que básicamente recoge estos c<strong>aracteres hexadecimales</strong>, los convierte a entero y obtiene el <strong>caracter de ASCII extendido</strong> de 255 caracteres, no el tradicional de 128 caracteres. De esta forma, obtendrá el carácter correcto ya traducido. Os dejo el ejemplo de la función:</p>
<p><strong>Función de descodificación de cadenas de texto Quoted Printable</strong></p>
<blockquote>
<pre class="vb"><span style="color: #b1b100;">Public</span> Shared <span style="color: #b1b100;">Function</span> QuotedPrintableDecode<span style="color: #66cc66;">&#40;</span>ByVal text <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">String</span><span style="color: #66cc66;">&#41;</span> _
<span style="color: #b1b100;">As</span> <span style="color: #b1b100;">String</span>
  <span style="color: #b1b100;">Dim</span> i <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span>
  <span style="color: #b1b100;">Dim</span> DecodedString <span style="color: #b1b100;">As</span> StringBuilder
  <span style="color: #b1b100;">Dim</span> Chars <span style="color: #b1b100;">As</span> Char<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">Dim</span> CharsValue <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">String</span>
  <span style="color: #b1b100;">Dim</span> HexValue <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span>
&nbsp;
  Chars = text.<span style="color: #66cc66;">ToCharArray</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  DecodedString = <span style="color: #b1b100;">New</span> StringBuilder
&nbsp;
  <span style="color: #b1b100;">For</span> i = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">To</span> Chars.<span style="color: #66cc66;">Length</span> - <span style="color: #cc66cc;">1</span>
    <span style="color: #b1b100;">If</span> Chars<span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> = <span style="color: #ff0000;">&quot;=&quot;</span> <span style="color: #b1b100;">Then</span>
      CharsValue = <span style="color: #b1b100;">Nothing</span>
      HexValue = <span style="color: #b1b100;">Nothing</span>
&nbsp;
      <span style="color: #b1b100;">If</span> Chars<span style="color: #66cc66;">&#40;</span>i + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #b1b100;">Then</span>
        CharsValue = Chars<span style="color: #66cc66;">&#40;</span>i + <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">Else</span>
        CharsValue = Chars<span style="color: #66cc66;">&#40;</span>i + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> &amp;amp; Chars<span style="color: #66cc66;">&#40;</span>i + <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span>
&nbsp;
      HexValue = <span style="color: #b1b100;">Val</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&amp;amp;H&quot;</span> &amp;amp; CharsValue<span style="color: #66cc66;">&#41;</span>
&nbsp;
      <span style="color: #b1b100;">If</span> CharsValue.<span style="color: #66cc66;">ToUpper</span> = <span style="color: #b1b100;">Hex</span><span style="color: #66cc66;">&#40;</span>HexValue<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">Then</span>
        DecodedString.<span style="color: #66cc66;">Append</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">ChrW</span><span style="color: #66cc66;">&#40;</span>HexValue<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        i += <span style="color: #cc66cc;">2</span>
      <span style="color: #b1b100;">Else</span>
        DecodedString.<span style="color: #66cc66;">Append</span><span style="color: #66cc66;">&#40;</span>Chars<span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span>
    <span style="color: #b1b100;">Else</span>
      DecodedString.<span style="color: #66cc66;">Append</span><span style="color: #66cc66;">&#40;</span>Chars<span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span>
  <span style="color: #b1b100;">Next</span>
&nbsp;
  <span style="color: #b1b100;">Return</span> DecodedString.<span style="color: #66cc66;">ToString</span>
<span style="color: #b1b100;">End</span> Functio</pre>
</blockquote>
<p>Ahora solo hace falta llamar a esa función pasando la cadena a convertir:</p>
<blockquote>
<pre class="vb"><span style="color: #b1b100;">Public</span> Shared <span style="color: #b1b100;">Sub</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">Dim</span> text <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">String</span> = <span style="color: #ff0000;">&quot;conexi=F3n&quot;</span>
  Console.<span style="color: #66cc66;">WriteLine</span><span style="color: #66cc66;">&#40;</span>Application.<span style="color: #66cc66;">QuotedPrintableDecode</span><span style="color: #66cc66;">&#40;</span>text<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></pre>
</blockquote>
<p>El resultado de aplicar esto seria la cadena "conexión". Para que funcione es necesario importar el namespace System.Text, pero solo para el StringBuilder</p>
<blockquote>
<pre class="vb">Imports System.<span style="color: #66cc66;">Text</span></pre>
</blockquote>
<p>Espero que os sirva de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/visual-basic-net/descodificar-quoted-printable-para-leer-correos-de-gmail-en-visual-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continue de un bucle en Visual Basic</title>
		<link>http://www.indalcasa.com/programacion/continue-de-un-bucle-en-visual-basic/</link>
		<comments>http://www.indalcasa.com/programacion/continue-de-un-bucle-en-visual-basic/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 12:02:00 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[.Net (C#)]]></category>
		<category><![CDATA[Mono (C#)]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[bucle]]></category>
		<category><![CDATA[continue]]></category>
		<category><![CDATA[iteraciones]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=157</guid>
		<description><![CDATA[Es curioso. El otro día estaba trabajando con unos bucles o loops como les dicen algunos, en el curro con Visual Basic .Net 1.1, es decir VB.Net en su versión de 2003. La verdad es que yo siempre he sido un hombre de bandera (jajaja) pero no se porque me empeñe en usar el continue. [...]]]></description>
			<content:encoded><![CDATA[<p>Es curioso. El otro día estaba trabajando con unos <strong>bucles</strong> o <strong>loops</strong> como les dicen algunos, en el curro con <strong>Visual Basic .Net 1.1</strong>, es decir <strong>VB.Net</strong> en su versión de 2003. La verdad es que yo siempre he sido un hombre de bandera (jajaja) pero no se porque me empeñe en usar el <strong>continue</strong>. Probando con diferentes formas de ponerlo, <strong>"Continue"</strong>, <strong>"Next"</strong> y alguna más que no recuerdo, buscando por internet y preguntando ha algun compañero, al final llegue a la conclusión, de que <strong>no existe un "Continue" ni equivalente en Visual Basic .Net</strong>, una lástima teniendo en cuenta que en <strong>C# si tiene continue</strong>. Seguiré usando mis banderitas que me funcionan en todos los lenguajes.</p>
<p>Por si hay alguien que no entiende para que sirve el <strong>continue</strong>, básicamente lo que hace es saltar a la siguiente <strong>iteración de un bucle</strong> ignorando todo el código de ese <strong>bucle</strong> desde que se llama hasta que llega al <strong>final del bucle</strong>, por llamarlo de alguna manera, "esta vuelta ha terminado".</p>
]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/continue-de-un-bucle-en-visual-basic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Char curiosidad de IsLetter e IsDigit</title>
		<link>http://www.indalcasa.com/programacion/char-curiosidad-de-isletter-e-isdigit/</link>
		<comments>http://www.indalcasa.com/programacion/char-curiosidad-de-isletter-e-isdigit/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 09:01:45 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[.Net (C#)]]></category>
		<category><![CDATA[Mono (C#)]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[char]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[visual basic]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=134</guid>
		<description><![CDATA[El otro día, nos disponíamos mi jefe y yo a realizar un control sobre un campo de texto de una aplicación web. La idea era que en este campo solo se pudiera incluir texto o números, pero en ningún caso debería de poderse incluir caracteres raros. Seamos sinceros y siempre que hemos necesitado usar esto [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día, nos disponíamos mi jefe y yo a realizar un control sobre un campo de texto de una aplicación web. La idea era que en este campo solo se pudiera <strong>incluir texto o números</strong>, pero en ningún caso debería de poderse incluir <strong>caracteres raros</strong>. Seamos sinceros y siempre que hemos necesitado usar esto en lenguajes donde su framework no estaba preparado para diferenciar que tipo de carácter era, acabamos o bien creando un array diccionario y comparando los caracteres o bien usando expresiones regulares. Como no, desde el salto a tecnología de Microsoft (en este caso <strong>Visual Basic .Net</strong>) me propuse buscar alguna clase o método que hiciera solo lo que quería hacer, y la encontré.</p>
<p>En <strong>.Net</strong> existe la <strong>clase Char</strong>, que tiene el método <strong>Char.IsLetterOrDigit</strong> (boleano) donde le indicas un <strong>char o carácter</strong> y este te devuelve true o false si es un número o letra y false si no lo es. Monto una función para recorrer carácter a carácter del campo de texto comprobando si es <strong>alfanumérico</strong> o no, con la idea de borrar los caracteres que no sean <strong>alfanuméricos</strong>. Una vez montada la función, la pruebo unas cuantas veces y todo funciona estupendamente. Cuando nos vamos a disponer a subir a producción... sorpresa, la última prueba a fallado (pero es imposible), se nos deslizo el dedo y por poner un "1", pusimos un <strong>"º"</strong>. Cuando nos ponemos a investigar (ha probar con jabatos) nos damos cuenta de que esta función, establece que los caracteres <strong>"º"</strong> y <strong>"ª"</strong> son <strong>alfanuméricos</strong>, vamos que son letras, supongo que la <strong>"o"</strong> y la <strong>"a"</strong>.</p>
<p>Por supuesto esto lo controlamos y listo, pero si alguien se encuentra en nuestra misma situación y conoce alguna función que si trabaje correctamente que lo comente. Y si alguien buscando por internet se encuentra bloqueado y se ve encuentra con este post, ya puede respirar tranquilo, porque no es que funcione mal, es que no funciona del todo bien. (Si, ya se que para algunos <strong>"º"</strong> y <strong>"ª"</strong> son letras, pero realmente son caracteres especiales)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/char-curiosidad-de-isletter-e-isdigit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bucle do-while en VisualBasic</title>
		<link>http://www.indalcasa.com/programacion/bucle-do-while-en-visualbasic/</link>
		<comments>http://www.indalcasa.com/programacion/bucle-do-while-en-visualbasic/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 08:15:42 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[.Net (C#)]]></category>
		<category><![CDATA[Mono (C#)]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[net framework]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[while]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=61</guid>
		<description><![CDATA[Llevo tiempo currando con Visual Basic .Net, pero como persona formada desde hace años en lenguajes tipo C (C, C++, Java, C#, PHP, etc) el paso a programar en Visual Basic, cuesta mucho y cosas tan cotidianas como hacer un bucle, un switch o similares pueden convertirse en una peligrosa trampa que nos consumira muchos [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo tiempo currando con <strong>Visual Basic .Net</strong>, pero como persona formada desde hace años en lenguajes tipo <strong>C</strong> (<strong>C</strong>, <strong>C++</strong>, <strong>Java</strong>, <strong>C#</strong>, <strong>PHP</strong>, etc) el paso a programar en Visual Basic, cuesta mucho y cosas tan cotidianas como hacer un bucle, un switch o similares pueden convertirse en una peligrosa trampa que nos consumira muchos minutos muy valiosos.</p>
<p>La ultima que me he topado ha sido el bucle <strong>do while</strong>. En cualquier lenguaje tipo <strong>C</strong>, practicamente independiente del lenguaje estos bucles son iguales:</p>
<blockquote><pre class="csharp">  <span style="color: #0600FF;">do</span> <span style="color: #000000;">&#123;</span>
    sentencias
  <span style="color: #000000;">&#125;</span> <span style="color: #0600FF;">while</span><span style="color: #000000;">&#40;</span>condicion<span style="color: #000000;">&#41;</span>;</pre>
</blockquote>
<p>Pero como no, estamos con <strong>Visual Basic</strong> y aqui todo funciona de manera diferente, es como nuestro tipico amigo que siempre lleva la contraria a todo. Por ejemplo para hacer un bucle <strong>do-while</strong> (me sorprende que en 9 meses sea la primera vez que me vea obligado a hacerlo, el bucle es <strong>do-loop-while</strong>, siendo su sintaxis</p>
<blockquote><pre class="vbnet">  <span style="color: #0600FF;">Do</span>
    sentencias
  <span style="color: #0600FF;">Loop</span> <span style="color: #0600FF;">While</span> condicio</pre>
</blockquote>
<p>Puede que la gente que conozca o programe en <strong>Visual Basic</strong> lo vea una tonteria, pero para gente como yo que por razones laborales se ven obligadas a programar en dicho lenguaje y que por muchos meses se que lleve sigan prefiriendo <strong>C#</strong> a <strong>VB.Net</strong>, cosas tan cotidianas pueden convertirse en un minimundo.</p>
<p>Ya de paso y para aprovechar el post, explico que los bucles <strong>do while</strong>, son bucles que se recorreran igual que los <strong>while</strong>, en funcion de una condicion que de ser cierta dara una vuelta mas al bucle y que la principal diferencia entre los bucles <strong>while</strong> y <strong>do while</strong>, radica en que el <strong>while</strong>, primero comprueba la condicion antes de hacer una iteracion al bucle, mientras que los <strong>do while</strong> primero dara una iteracion al bucle y al final comprobara si debe de seguir haciendo iteraciones. Dicho de otro modo, el el <strong>while</strong>, primero comprobamos que debemos entrar al bucle y de ser cierto, entramos, en los <strong>do while</strong>, primero entramos al bucle y al final de este comprobamos si debemos dar una vuelta mas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/bucle-do-while-en-visualbasic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Declarar un método no heredable o final</title>
		<link>http://www.indalcasa.com/programacion/declarar-un-metodo-no-heredable-o-final/</link>
		<comments>http://www.indalcasa.com/programacion/declarar-un-metodo-no-heredable-o-final/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 22:49:30 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[.Net (C#)]]></category>
		<category><![CDATA[Mono (C#)]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Visual Basic .Net]]></category>

		<guid isPermaLink="false">http://84.20.10.74/~indalcas/?p=41</guid>
		<description><![CDATA[Para aquellos programadores que llegan a .Net de la mano de PHP o Java, verán algo diferente el hecho de heredar métodos de clases. Cuando heredamos una clase en Java o PHP los métodos se sobrescriben redeclarándolos en la clase hija y cuando queremos evitar que una clase hija implemente un método, lo establecemos con [...]]]></description>
			<content:encoded><![CDATA[<p>Para aquellos programadores que llegan a <strong>.Net</strong> de la mano de PHP o Java, verán algo diferente el hecho de <strong>heredar métodos de clases</strong>. Cuando heredamos una clase en Java o PHP los métodos se sobrescriben redeclarándolos en la clase hija y cuando queremos evitar que una clase hija implemente un método, lo establecemos con la palabra reservada final.</p>
<p>Por ejemplo PHP se utilizaría para evitar la herencia:</p>
<blockquote>
<pre class="php"><span style="color: #000000; font-weight: bold;">public</span> final <span style="color: #000000; font-weight: bold;">function</span> miMetodoNoHeredable<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
   <span style="color: #808080; font-style: italic;">//Codigo del metodo</span>
<span style="color: #66cc66;">&#125;</span></pre>
</blockquote>
<p>En el caso de java es muy similar:</p>
<blockquote>
<pre class="java5"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #993333;">void</span> miMetodoNoHeredable<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
   <span style="color: #808080; font-style: italic;">//Codigo del metodo</span>
<span style="color: #66cc66;">&#125;</span></pre>
</blockquote>
<p>Pero en <strong>.Net</strong> aunque la base sigue siendo la misma es algo diferente. Para <strong>heredar un método</strong>, debemos de declarar el <strong>método como virtual</strong> y para declarar un método como final, usaremos la <strong>sentencia sealed (NotOverridable en VB)</strong>. Para hacer un símil podríamos decir que la palabra reservada <strong>final de Java o PHP</strong> equivale en cierta medida a la <strong>sealed (NotOverridable en VB) de .Net</strong>.</p>
<p>Hay que apuntar que por defecto los métodos declarados en <strong>.Net</strong> son <strong>sealed</strong>, así que para heredarlos deberemos de declararlos como <strong>virtual </strong>e indicar a sus hijos que los métodos son <strong>override </strong>para que sobrescriban los valores del padre.</p>
<p>El caso de .net</p>
<blockquote>
<pre class="csharp"><span style="color: #008080; font-style: italic;">// Ejemplo de C#</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">sealed</span> <span style="color: #0600FF;">void</span> miMetodoNoHeredable<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">//Codigo del metodo</span>
<span style="color: #000000;">&#125;</span></pre>
</blockquote>
<blockquote>
<pre class="vbnet"><span style="color: #008080; font-style: italic;">'Ejemplo de Visual Basic .Net o VB.Net</span>
<span style="color: #FF8000;">Public</span> <span style="color: #FF8000;">NotOverridable</span> <span style="color: #0600FF;">Sub</span> miMetodoNoHeredable<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
   <span style="color: #008080; font-style: italic;">'Codigo del metodo</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/declarar-un-metodo-no-heredable-o-final/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
