<?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>XperimentoS &#187; C#</title>
	<atom:link href="http://www.xperimentos.com/category/programacion/lenguajes/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xperimentos.com</link>
	<description>Experiencias Profesionales...</description>
	<lastBuildDate>Sun, 10 Jul 2011 12:36:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Los 10 FrameWorks .Net que debería aprender en el 2007</title>
		<link>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/</link>
		<comments>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/#comments</comments>
		<pubDate>Sat, 26 May 2007 17:13:53 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/</guid>
		<description><![CDATA[Interesante nota de Peter Bromberg en la cual menciona desde su punto de vista cuales son los 10 FrameWorks que deberíamos revisar durante lo que queda de año 2007 para no &#8220;quedarnos obsoletos&#8221;. Ciertamente, cada uno podemos tener nuestra propia interpretación, pero no está menos ver cual es revisar otros puntos de vista. El listado incluye las [...]]]></description>
			<content:encoded><![CDATA[<p><img border="0" align="left" src="http://www.xperimentos.com/public/2007/05/microsoft-net-logo-white-2.PNG" alt="Microsoft .NET logo white" title="Microsoft .NET logo white" />Interesante nota de <a target="_blank" href="http://www.eggheadcafe.com/articles/pbrombergresume.asp">Peter Bromberg</a> en la cual menciona desde su punto de vista cuales son los 10 FrameWorks que deberíamos revisar durante lo que queda de año 2007 para no &#8220;quedarnos obsoletos&#8221;. Ciertamente, cada uno podemos tener nuestra propia interpretación, pero no está menos ver cual es revisar otros puntos de vista.</p>
<p>El listado incluye las siguientes tecnologías:</p>
<ol>
<li>WCF (Windows Communication Foundation)</li>
<li>ADO.NET (and LINQ)</li>
<li>WPF (Windows Presentation Foundation)</li>
<li>SQL Server 2005 (and on)</li>
<li>ASP.NET 2.0</li>
<li>Security</li>
<li>TDD (Test Driven Development)</li>
<li>Networking (System.Net and related)</li>
<li>Threading</li>
<li>Learning</li>
</ol>
<p>Enlaces:<br />
<a target="_blank" href="http://weblogs.asp.net/pleloup/archive/2007/05/25/top-10-net-framework-technologies-to-learn-in-2007.aspx">Top 10 .NET Framework Technologies to Learn in 2007</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabajar con ficheros Zip en VB.Net y C#</title>
		<link>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/</link>
		<comments>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/#comments</comments>
		<pubDate>Mon, 30 Apr 2007 16:56:22 +0000</pubDate>
		<dc:creator>maitetxu</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=169</guid>
		<description><![CDATA[A pesar de que la continuidad de J# está mas que cuestionada, todavía puede ser útil para varias cosas entre ellas comprimir archivos. Desarrollando una aplicación Web en .Net hemos tenido la necesidad de comprimir varios archivos en un fichero Zip y enviarlos al cliente Web de forma transparente para el usuario. Existen numerosas librerías [...]]]></description>
			<content:encoded><![CDATA[<p>A pesar de que la continuidad de J# está mas que cuestionada, todavía puede ser útil para varias cosas entre ellas comprimir archivos.</p>
<p>Desarrollando una aplicación Web en .Net hemos tenido la necesidad de comprimir varios archivos en un fichero Zip y enviarlos al cliente Web de forma transparente para el usuario.</p>
<p>Existen numerosas librerías para trabajar con ficheros Zip, pero encontramos una forma sencilla de trabajar con los ficheros Zip desde un programa VB.Net (también válido para C#). El Framework 1.1 de Microsoft (y también el 2.0) incorporan el lenguaje J# que es un “<em>pariente de Java</em>”, luego “<em>java.util.zip</em>” debe existir en algún lado. Si alguien se pregunta si existe en C# la respuesta es no <img src='http://www.xperimentos.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Efectivamente J# contiene “<em>java.util.zip</em>” y está dentro de “<em>vjslib.dll</em>”. Primero, nos aseguramos que tenemos en nuestro servidor/pc está librería, sino la tenéis podéis descargaros el “<em>Paquete redistribuible de Microsoft Visual J# .NET versión 1.1</em>” (o en inglés “<em>Microsoft Visual J# .NET Version 1.1 Redistributable Package</em>”) en <a rel="Paquete redistribuible de Microsoft Visual J# .NET versión 1.1" target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=e3cf70a9-84ca-4fea-9e7d-7d674d2c7ca1)">esta dirección</a>.</p>
<p>Añadiendo una referencia a la librería <em>vjslib.dll</em> en nuestro proyecto ya podemos utilizar las funciones que necesitamos para acceder a los ficheros zip como en el siguiente ejemplo:</p>
<p><code><br />
<font color="#0000ff">Imports</font> java.util<br />
<font color="#0000ff">Imports</font> java.util.zip<br />
<font color="#0000ff">Imports</font> java.io</p>
<p><font color="#008000">' Función auxiliar que copia los bytes de un inputStream a un outputStream</font><br />
<font color="#0000ff">Public Shared Sub</font> CopyStream(<font color="#0000ff">ByVal</font> inputStream _<br />
       <font color="#0000ff">As</font> java.io.InputStream, _<br />
       <font color="#0000ff">ByRef</font> outputStream <font color="#0000ff">As</font> java.io.OutputStream)<br />
  <font color="#0000ff">Dim</font> buffer(8192) <font color="#0000ff">As</font> SByte<br />
  <font color="#0000ff">Dim</font> got <font color="#0000ff">As Integer</font><br />
  got = inputStream.read(buffer, 0, buffer.Length)<br />
  <font color="#0000ff">While</font> got &gt; 0<br />
    outputStream.write(buffer, 0, got)<br />
    got = inputStream.read(buffer, 0, buffer.Length)<br />
  <font color="#0000ff">End While</font><br />
  outputStream.flush()<br />
<font color="#0000ff">End Sub</font></p>
<p><font color="#0000ff">Public Function</font> createZip(<font color="#0000ff">ByVal</font> zipPath <font color="#0000ff">As</font> String, _<br />
  <font color="#0000ff">ByVal</font> files2Zip <font color="#0000ff">As</font> System.Collections.ArrayList) _<br />
  <font color="#0000ff">As Boolean</font>  <br />
  <font color="#0000ff">Dim </font>zipOutputStream <font color="#0000ff">As</font> zipOutputStream<br />
  <font color="#0000ff">Dim</font> zipEntry <font color="#0000ff">As</font> zipEntry<br />
  <font color="#0000ff">Dim</font> fileInputStream <font color="#0000ff">As</font> java.io.FileInputStream<br />
  <font color="#0000ff">Dim</font> file2Zip <font color="#0000ff">As</font> String<br />
  <font color="#0000ff">Dim</font> auxObj <font color="#0000ff">As</font> Object</code><code> </code><code><font color="#008000">  ' Esta variable contiene el valor que la<br />
  ' función retornara</font><br />
  <font color="#0000ff">Dim</font> created = <font color="#0000ff">True </font><font color="#0000ff">Try<br />
  </font><font color="#008000">' Crea el fichero zip</font><br />
  zipOutputStream = <font color="#0000ff">New</font> _<br />
    zipOutputStream(<font color="#0000ff">New</font> _<br />
    java.io.FileOutputStream(zipPath))<br />
   <font color="#0000ff">If Not</font> files2Zip <font color="#0000ff">Is Nothing Then<br />
    For Each</font> auxObj <font color="#0000ff">In</font> files2Zip<br />
      file2Zip = <font color="#0000ff">CType</font>(auxObj, <font color="#0000ff">String</font>)<br />
      zipEntry = <font color="#0000ff">New</font> _<br />
      zipEntry(System.IO.Path.GetFileName(file2Zip))<br />
      <font color="#008000">' Comprimimos los datos</font><br />
      zipEntry.setMethod(zipEntry.DEFLATED)<br />
      <font color="#008000">' Añadimos el fichero al zip</font><br />
      zipOutputStream.putNextEntry(zipEntry)<br />
      <font color="#0000ff">Try</font><br />
        fileInputStream = <font color="#0000ff">New</font> _<br />
          java.io.FileInputStream (file2Zip)<br />
        <font color="#0000ff">Try</font><br />
          CopyStream(fileInputStream, _<br />
          zipOutputStream)<br />
        <font color="#0000ff">Finally</font><br />
          fileInputStream.close()<br />
        <font color="#0000ff">End Try<br />
      Catch</font> e <font color="#0000ff">As</font> Exception<br />
        created = <font color="#0000ff">False<br />
      Finally</font><br />
        zipOutputStream.closeEntry()<br />
     <font color="#0000ff"> End Try<br />
    Next<br />
  End If<br />
Catch</font> e <font color="#0000ff">As</font> Exception<br />
  created = <font color="#0000ff">False<br />
Finally<br />
  If Not</font> zipOutputStream <font color="#0000ff">Is Nothing Then</font><br />
    zipOutputStream.close()<br />
  <font color="#0000ff">End If</font><br />
<font color="#0000ff">End Try</font></code><code><font color="#0000ff">Return</font> created<br />
<font color="#0000ff">End Function</font></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tabla de equivalencias entre VB.Net y CSharp (C#)</title>
		<link>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/</link>
		<comments>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/#comments</comments>
		<pubDate>Sat, 10 Mar 2007 16:18:07 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=99</guid>
		<description><![CDATA[Aunque es relativamente sencillo con la tecnología .Net cambiar de un lenguaje de programación a otro, ya que la filosofía de trabajo es la misma, los objetos, los espacios de nombres&#8230;, pero al cambiar entre VB.Net y C# pueden resultar frustrantes determinadas características de cada uno de los lenguajes. Un ejemplo, son las palabras claves [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque es relativamente sencillo con la tecnología .Net cambiar de un lenguaje de programación a otro, ya que la filosofía de trabajo es la misma, los objetos, los espacios de nombres&#8230;, pero al cambiar entre VB.Net y C# pueden resultar frustrantes determinadas características de cada uno de los lenguajes. Un ejemplo, son las palabras claves para los tipos de clases en VB.Net.</p>
<p>Os incluimos una tabla de equivalencias entre VB.Net y C# que os hará mas fácil el cambio de lenguaje o traducir código de los ejemplos que encontréis en Internet y que no estén en el lenguaje que utilizáis.</p>
<p><span id="more-99"></span></p>
<table border="1" cellPadding="2" cellSpacing="0">
<tr>
<td bgColor="#9999ff" vAlign="top"><strong>VB.NET</strong></td>
<td bgColor="#9999ff" vAlign="top"><strong>C#</strong></td>
<td bgColor="#9999ff" vAlign="top"><strong>Descripción</strong></td>
</tr>
<tr>
<td>NotInheritable</td>
<td>sealed</td>
<td>Especifica que una clase no puede ser usada como base para otra clase, es decir, no puede ser heredada.</td>
</tr>
<tr>
<td>NotOverridable</td>
<td>sealed</td>
<td>Especifica que un método no puede ser sobrescrito.</td>
</tr>
<tr>
<td>MustInherit</td>
<td>abstract</td>
<td>Especifica que una clase sólo puede ser heredada (no puede ser creada una instancia de la clase).</td>
</tr>
<tr>
<td>MustOverride</td>
<td>abstract</td>
<td>Especifica que un método debe ser implementado en las clases hijas.</td>
</tr>
<tr>
<td>Overridable</td>
<td>virtual</td>
<td>Especifica que una propiedad de la clase puede ser sobrescrita.</td>
</tr>
<tr>
<td>Shared</td>
<td>static</td>
<td>Especifica que una propiedad de la clase es compartida por todas las instancias de la clase (es estático). No es necesaria ninguna instancia de la clase para llamar a esta propiedad).</td>
</tr>
<tr>
<td>Static</td>
<td>no equivalent</td>
<td>Especifica que el valor de una variable local es preservado entre diferentes llamadas.</td>
</tr>
<tr>
<td>Public</td>
<td>public</td>
<td>Clase o propiedad es visible fuera del proyecto o assembly.</td>
</tr>
<tr>
<td>Friend</td>
<td>internal</td>
<td>Clase o propiedad es invisible fuera del proyecto o assembly.</td>
</tr>
<tr>
<td>Private</td>
<td>private</td>
<td>Clase o propiedad es visible sólo en el proyecto.</td>
</tr>
<tr>
<td>Overloads</td>
<td>not required</td>
<td>Especifica que una propiedad sobrecargada por otra propiedad.</td>
</tr>
<tr>
<td>Overrides</td>
<td>override</td>
<td>Especifica que una propiedad sobrescrita por otra propiedad.</td>
</tr>
<tr>
<td>Implements I1</td>
<td>class C1:I1</td>
<td>Especifica que la clase (C1) implementa el interfaz I1.</td>
</tr>
<tr>
<td>Inherits C2</td>
<td>class C1:C2</td>
<td>Especifica que la clase (C1) hereda la clase C2.</td>
</tr>
<tr>
<td>Implements I1</p>
<p>Inherits C2</td>
<td>class C1:C2,I1</td>
<td>Especifica que la clase (C1) implementa el interfaz I1 y hereda la clase C2.</td>
</tr>
<tr>
<td>Shadows</td>
<td>new</td>
<td> </td>
</tr>
<tr>
<td>Finalize</td>
<td>~C1 <span class="VBE_Normal">(destructor)</span></td>
<td>Método llamado por el sistema justo antes de que el garbage collection reclame el objeto. C1 es el nombre de la clase.</td>
</tr>
<tr>
<td>New</td>
<td>C1</td>
<td>Método constructor, llamado cuando el objeto es creado. C1 es el nombre de la clase.</td>
</tr>
<tr>
<td>Dim x as Int32</td>
<td>Int32 x</td>
<td>Declara la variable &#8220;x&#8221; del typo &#8220;System.Int32&#8243;.</td>
</tr>
<tr>
<td>Imports</td>
<td>using</td>
<td>Permite llamar a métodos sin necesidad de especificar el nombre del Namespace completo.</td>
</tr>
<tr>
<td>&lt;&gt;</td>
<td>[]</td>
<td>Especifica parámetros.</td>
</tr>
<tr>
<td>_</td>
<td>;</td>
<td>Continuación de línea en VB, fin de línea en C#.</td>
</tr>
<tr>
<td>And</p>
<p>Or</td>
<td>&amp;&amp;</p>
<p>||</td>
<td>Operadores lógicos.</td>
</tr>
<tr>
<td>no soportado</td>
<td>&lt;&lt; &gt;&gt;</td>
<td>Operadores Shift.</td>
</tr>
<tr>
<td>X+=1 (x=x+1)</p>
<p>X-=1 (x=x-1)</p>
<p>also *=, /=, ^= etc..</td>
<td>x++</p>
<p>x&#8211;</td>
<td>Incrementos.</td>
</tr>
<tr>
<td>Dim x(4) as Int32</p>
<p>= 5 items (0 to 4)</td>
<td>Int32[] x = new Int32[4];</p>
<p>= 4 items (0 to 3)</td>
<td>Diferencias entre los elementos creados en las declaraciones de arrays.</td>
</tr>
<tr>
<td>Dim x as Int32</td>
<td>Int32 x = 0</td>
<td>x es inicializado a 0 automáticamente en VB.</td>
</tr>
<tr>
<td>ReDim Preserve</td>
<td>no equivalent</td>
<td>Redimensiona un array.</td>
</tr>
<tr>
<td>Optional</td>
<td>no soportado</td>
<td>Especifica que un parámetro es opcional.</td>
</tr>
<tr>
<td>Select Case x<br />
Case True<br />
Case Else<br />
End Select</td>
<td>switch(I)<br />
{<br />
case 1:break;<br />
default:break;<br />
};</td>
<td> </td>
</tr>
<tr>
<td>ByVal</p>
<p>ByRef</td>
<td>not requerido</p>
<p>ref</td>
<td>Pasando parámetros por valor y referencia.</td>
</tr>
<tr>
<td>Me</td>
<td>this</td>
<td>Referencia al objeto actual.</td>
</tr>
<tr>
<td>MyBase</td>
<td>base</td>
<td>Referencia a la clase base.</td>
</tr>
<tr>
<td>MyClass</td>
<td>no soportado</td>
<td>Realiza una llamada non-virtual a un método virtual del objeto actual.</td>
</tr>
<tr>
<td>Const</td>
<td>const</p>
<p>readonly</td>
<td>Declara una constante.</td>
</tr>
<tr>
<td>Enum</td>
<td>enum</td>
<td>Declara un enumerator.</td>
</tr>
<tr>
<td>Structure</td>
<td>struct</td>
<td>Declara una estructura.</td>
</tr>
<tr>
<td>no soportado</td>
<td>volatile</td>
<td>Declara un objeto que puede ser modificado de forma asíncrona.</td>
</tr>
<tr>
<td>obj = Nothing</td>
<td>obj == null</td>
<td>Comprueba que una variable objeto no es nula.</td>
</tr>
<tr>
<td>Option Explicit</td>
<td>Opción por defecto y no puede ser cambiada</td>
<td>Especifica que todas las variables tienen que ser declaradas.</td>
</tr>
<tr>
<td>IsDBNull</td>
<td>no soportado</td>
<td>Comprobación para un nulo de base de datos.</td>
</tr>
<tr>
<td>Default</td>
<td>no soportado</td>
<td>Especifica un método por defecto de un clase.</td>
</tr>
<tr>
<td>WithEvents</td>
<td>no soportado</td>
<td>Declara una variable cuyos eventos queremos manejar.</td>
</tr>
<tr>
<td>Handles</td>
<td>no soportado</td>
<td>Especifica que un método es llamado por un evento.</td>
</tr>
<tr>
<td>Try<br />
Catch<br />
Finally<br />
End Try</td>
<td>try{}<br />
catch{}<br />
finally{}</td>
<td>Manejo estructurado de las excepciones.</td>
</tr>
<tr>
<td>REM</p>
<p>&#8216;</td>
<td>/* &#8230; */</p>
<p>//</td>
<td>Líneas de comentarios</td>
</tr>
<tr>
<td>not soportado</td>
<td>///</td>
<td>líneas de comentarios XML</td>
</tr>
<tr>
<td>Dim x As String = &#8220;Hola&#8221;<br />
Dim y As Char = GetChar(x, 1)</td>
<td>string x = &#8220;Hola&#8221;;<br />
char y;<br />
y = x[1];</td>
<td>Recupera un carácter de una cadena de texto.</td>
</tr>
<tr>
<td>With &#8230; End With</td>
<td>no soportado</td>
<td>Evalúa un objeto una vez y permite usarlo varias veces.</td>
</tr>
<tr>
<td>Dim a() as Long = {1,2,3}</td>
<td>int[] x = new int[4] {1,2,3,4};</td>
<td>Inicialización de un array.</td>
</tr>
<tr>
<td>Event</p>
<p>RaiseEvent</td>
<td>event</td>
<td>Declara y lanza un evento.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

