Sei sulla pagina 1di 36

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I.

. Haddad (Microsoft Most Valuable Professional)

Desarrolador Cinco Estrellas Visual Basic .NET 2005 + Visual C# .NET 2005 + Visual Studio .NET 2005

Ejercicios

Pgina: 1

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

ndice
Novos Controles.................................................................................................................. 3 WebBrowser ....................................................................................................................... 3 Menus e Toolbars................................................................................................................ 7 Outros Controles ............................................................................................................... 19 CDIGOS DO PPT .......................................................................................................... 22 Stack.............................................................................................................................. 22 Semforo ....................................................................................................................... 22 Serial Port...................................................................................................................... 23 Partial Class .................................................................................................................. 23 Classe My...................................................................................................................... 24 Statements ..................................................................................................................... 25 Overloading de Operador.............................................................................................. 25 Usando um Provider ..................................................................................................... 26

Pgina: 2

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

Nuevos Controles WebBrowser


Objetivo: Montar un formulario Windows Forms con el control WebBrowser. Este control permite navegar en pginas WEB a travs de un formulario. Atencin: Estos ejercicios pueden hacerse tanto con el Visual Studio .NET 2005 Beta 2, como con la versin Visual Basic 2005 Express Edition.
1. Abra el Visual Studio 2005 beta 2. Seleccione el men File / New Project para crear un nuevo Proyecto segn la siguiente figura. Note que el lenguaje es el Visual Basic, pero si usted quiere crear en Visual C# no hay ningn problema ya que los pasos son los mismos.

2. A continuacin presione el botn OK. Enseguida ser creado el formulario Form1, que es el default. Exclyalo y cree uno nuevo llamado FormWebBrowser. Para ello, en el Solution Explorer haga clic con el botn derecho sobre el nombre

Pgina: 3

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

del proyecto DCE1 y seleccione Add / Windows Form. Digite el nombre del formulario y OK.

3. Exhiba la Toolbox (men View / Toolbox).

Pgina: 4

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

4. Monte un formulario con los siguientes controles: 1 Label, 1 TextBox (txtURL), 1 Button (btnURL) y 1 WebBrowser. Para el control WebBrowser ajuste las propiedades Dock a Bottom.

Pgina: 5

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

5. Haga un doble clic en el botn y digite el siguiente cdigo para navegar.


VB.NET Public Class FormWebBrowser Private Sub btnURL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnURL.Click WebBrowser1.Navigate(txtURL.Text.Trim) End Sub End Class C# private void btnURL_Click(object sender, EventArgs e) { webBrowser1.Url(txtURL.Text.Trim); }

6. Para ejecutar cualquier formulario en el Solution Explorer, haga clic con el botn derecho en el DCE1 y seleccione Properties. Altere la propiedad Startup Object para el nombre del formulario que ser ejecutado. Este procedimiento deber ser ejecutado para todos los formularios creados. Es como si fuese un formulario inicial a partir del cual se llama a los dems. 7. Presione F5 para ejecutar. Suministre una URL y haga clic en el botn GO para abrir la pgina dentro del control webbrowser. Altere el tamao de la ventana a

Pgina: 6

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

travs de los bordes y note que el control tambin se adecua gracias a la propiedad DOCK.

Mens y Toolbars
Objetivo: Mostrar los nuevos recursos y controles de mens y barras de navegacin.
1. Adicione un nuevo Windows Form llamado MensToolbars al Solution Explorer. 2. Exhiba la Toolbox y arrastre los controles MenStrip, StatusStrip y ContextMenStrip.

Pgina: 7

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

3. Observe que estos controles aparecen en el pie de pgina del formulario. Seleccione el MenStrip y monte un men segn la siguiente figura. Adicione otras opciones de men segn sus necesidades.

4. Seleccione el control StatusStrip y seleccione StatusLabel y ProgressBar. De este modo se tiene en el mismo control diferentes posibilidades de configuraciones y tipos de controles. Es posible adems agregar un DropDownButton y un SplitButton. Con ello el formulario es optimizado y los cdigos relativos a los controles resultan ms simples de escribirse.

Pgina: 8

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

5. Seleccione el ContextMenStrip y agregue las siguientes opciones. Estas opciones se asociarn a los controles contenidos en el formulario para facilitarle los atajos a los usuarios y ofrecer funcionalidades relativas al contexto.

6. Cuando monta un formulario conteniendo una fuente de datos, existe una barra de navegacin que est a asociada a la fuente de datos proporcionando nuevas funcionalidades, especialmente de navegacin en los registros. Cree un nuevo Windows Forms llamado BancoDatos. El primer paso es montar una fuente de datos, por lo tanto, seleccione el men Data / Show Data Sources. En el VS.Net 2005 el concepto de fuente de datos cambi, ya que en esta ventana de Data Sources usted define un conjunto de informaciones que podrn ser usadas en todo el proyecto.

Pgina: 9

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

7. Haga clic en Add New Data Source. Note que la ventana muestra las opciones para que se seleccione la fuente formada por un Database, un Web Service o un Object. Seleccione Database y haga clic en Next.

Pgina: 10

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

8. Aqu tenemos la parte de conexin con el banco de datos. En este momento haga clic en New Connection para definir una nueva conexin, suministre todos los datos necesarios y pruebe la conexin. Observe el nombre del Data Source al usar el Microsoft SQL Server (SqlClient), ya que es l que hace el acceso al SQL Server 7 o superior. El banco de datos a ser usado es el Northwind.

Pgina: 11

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

9. En caso de que quiera cambiar, haga clic en el botn Change y seleccione el Provider adecuado.

Pgina: 12

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

10. Finalmente, haga clic en el botn OK y observe como qued la string de conexin.

11. Haga clic en el botn Next y deje el chebox seleccionado para que esta string de conexin sea almacenada en el archivo de configuracin con el propsito de facilitar el acceso y el uso.

Pgina: 13

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

12. Haga clic en Next para exhibir la lista conteniendo todos los objetos del banco de datos Northwind. Seleccione la tabla Products con algunos campos. Preste atencin al nombre del DataSet que ser generado. Haga clic en Finish para terminar el proceso.

Pgina: 14

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

13. Vea la ventana Data Sources conteniendo la fuente de datos seleccionada en los pasos anteriores. Una de las grandes facilidades es que se puede definir para cada campo cmo ser que dicho campo le aparecer al usuario, as como la tabla, que es DataGridView, Details o Customize.

Pgina: 15

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

14. Despus arrastre la tabla Products hacia dentro del cuerpo del formulario y vea que los datos son exhibios de acuerdo con el tipo definido en la exhibicin. Si es un DataGridView ser exhibido un GridView, si es un Details ser exhibido como detalles de la tabla.

15. Esta operacin mont en el pi de pgina varios controles que son: el NorthwindDataSet, el ProductsTableAdapter, el ProductsBindingSouce y el ProductsBindingNavigator, el que es el control asociado a la barra de navegacin es el BindingNavigator.

Pgina: 16

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

16. Esta barra de navegacin est siempre vinculada a una fuente de datos.

Pgina: 17

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

17. Ejecute este formulario y navegue en los registros a travs de la barra de navegacin. Observe an que contiene los conos de Add New, Delete y Save, los que implementan dichas funcionalidades directamente en el control evitndole muchos cdigos al desarrollador.

Pgina: 18

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

Otros Controles
1. Adicione un nuevo Windows Form llamado tableLayout al Solution Explorer. Arrastre el control TableLayoutPanel hacia el formulario. Note que se genera una tabla con 2 lneas y 2 columnas. Abra la Smart Tag y configure el control segn le resulte necesario.

2. En caso de que quiera ajustar el layout a travs de la ventana de edicin, seleccione Edit Rows y Columns. Este control es excelente para montar un layout conteniendo solamente un control en cada clula, permitindole al desarrollador un ajuste fino al formulario.

Pgina: 19

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

3. Adicione un nuevo Windows Form llamado Reports al Solution Explorer. Exhibir informes generados en el SQL Reporting Services en un formulario requiere un control especfico para ello. Este control es el ReportViewer, por lo tanto, arrstrelo hacia el formulario.

Pgina: 20

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

4. Todos los informes generados con el SQL Reporting Services sern instalados en un servidor de WEB, y se tendr acceso a los mismos va http. Como la mayora de los aplicativos necesitan informes, esta herramienta fue elaborada para ofrecer productividad con alto grado de complejidad en el anlisis de datos. El desafo es exhibir estos informes en un formulario, y ahora, con este control todo se vuelve ms fcil. 5. Bsicamente las propiedades ReportPath y ReportServerUrl son las principales de este control. Por lo tanto usted puede alterar las propiedades en tempo de ejecucin.

Pgina: 21

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

CDIGOS de los PPT VB.NET


Stack
' Generic MyStack class Public Class MyStack(Of T) Private frames As T() Private pointer As Integer = 0 Public Sub New(ByVal size As Integer) frames = New T(size) {} End Sub Public Sub Push(ByVal frame As T) frames(pointer) = frame pointer += 1 End Sub Public Function Pop() As T pointer -= 1 Return frames(pointer) End Function End Class Dim s As New MyStack(Of Integer)(7) For f As Integer = 0 To 6 s.Push(f) Next f ' Prints 6543210 For f As Integer = 0 To 6 Console.Write( s.Pop().ToString()) Next f

Semforo
Um semforo criado com um contador, o qual representa um nmero total de threads que podem sem acessadas pelo recurso protegido. Para usar um semforo, a thread chama

Pgina: 22

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

o mtodo WaitOne. Se o contador da chamada estiver disponvel para retornar imediatamente, o contador reduzido para 1. Se no estiver disponvel para este pedido, ento a instncia bloqueia o pedido WaitOne at que o contador esteja disponvel. Quando a thread usada for finalizada dever chamar o mtodo Release, o qual reduz o contador para 1. Cria um semforo com um contador de 3 Dim sem As new Semaphore(3) Bloqueia at um contador disponvel sem.WaitOne() Usa o recurso protegido Release o semforo sem.Release()

Serial Port
A comunicao serial no suportada pelo .NET nas verses anteriores a 2005, o acesso era feito via P/Invoke no Win32 APIs. Agora temos uma classe nova chamada System.IO.Ports com funcionalidades completas para serial I/O. A classe principal a SerialPort, o qual suporta acesso fsico e virtual, por exemplo, aqueles suportados por dispositivos com USB. Temos duas formas de suporte I/O: event-driven (onde o objeto SerialPort registrado no tratamento do evento) e blocking via mtodos Read e Write, o qual tambm permite acesso de Stream atravs da SerialPort. Imports System.IO.Ports ... Dim sp As New SerialPort("COM1", 19200) sp.ReadTimeout = 3000 sp.WriteTimeout = 3000 sp.Open() ... sp.Read(byteBuff, 0, nBytesToRead);c

Partial Class
Veja um exemplo do uso de Partial Class. O VB mais flexvel que o C# e o nico erro aqui que a declarao do campo i ocorre novamente e este j foi declarado na parte 2.

Pgina: 23

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

' Demo.Part1.vb Imports System Partial Public Class Demo Public Sub New() Console.Write("P1") End Sub End Class ' Demo.Part2.vb Partial Public Class Demo Private i As Integer End Class ' Demo.Part3.vb ' OK no Visual Basic Public Class Demo ' Erro! Private i As Integer ' OK Private j As Integer Public Sub Test() ' OK no Visual Basic Console.Write("P3") End Sub End Class

Classe My
' Exibe os argumentos da linha de comando For Each s As String In My.Application.CommandLineArgs MessageBox.Show(s) Next ' Exibe os arquivos do Visual Studio em My Documents For Each s As String In My.Computer.FileSystem.GetFiles( _ My.Computer.FileSystem.SpecialDirectories.MyDocuments, _ False, "Visual Studio*.doc") MessageBox.Show(s) Next ' Testa as permisses do usurio

Pgina: 24

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

If My.User.IsInRole( "Administrators") Then MessageBox.Show( "Hello Administrator " + My.User.Identity.Name) End If ' Chama um mtodo do Web Service MessageBox.Show( My.WebServices.DemoService.HelloWorld())

Statements
' Visual Basic 2005 Using p As New Pen(c) g.DrawLine(p, 0, 0, 50, 50) End Using

Overloading de Operador
' Classe com Public Class Private x Private y overload de + Dem As Byte As Byte

Public Sub New(ByVal i As Byte, ByVal j As Byte) Me.x = i Me.y = j End Sub Public Overrides Function ToString() As String Return String.Format("[{0},{1}]", x, y) End Function Public Shared Operator +( ByVal d1 As Dem, _ ByVal d2 As Dem) As Dem Return New Dem( d1.x + d2.x,d1.y + d2.y) End Operator End Class ' Teste Dim d1 As Dem = New Dem(1, 0) Dim d2 As Dem = New Dem(2, 2) Dim d3 As Dem = d1 + d2 d3 += d1 Trace.Write(d3) ' Exibe [4,2]

Pgina: 25

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

Usando um Provider
Import System.Data.Common Dim factory As new DbProviderFactory = DbProviderFactories.GetFactory("provider-name") Dim con As new DbConnection=factory.CreateConnection() Dim cmd As new DbCommand = con.CreateCommand()

Dim dt As new DataTable = DbProviderFactories.GetFactoryClasses() Dim factory As new DbProviderFactory = DbProviderFactories.GetFactory(dt.Rows[x]) Ou Dim factory As new DbProviderFactory = DbProviderFactories.GetFactory( dt.Select("InvariantName='System.Data.SqlClient'") [0]["InvariantName"].ToString()); Dim dt As DataTable = conn.GetSchema("MetaDataCollections") Dim dt As DataTable = conn.GetSchema("collection-name") Dim dt As DataTable = conn.GetSchema("collection-name", restriction-array)

Pgina: 26

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

CDIGOS dos PPT C#


Usando um Provider
Nullable Permitem tipos para suporte valores null Nullable<int> i = 3; bool b = i.HasValue(); int j = i.Value();

EventHandler Define tratamento de eventos delegate void EventHandler<T>(Object sender, T e) where T : EventArgs;

Usando um Provider
// using // System.Collections.Generic; Stack< Employee > employees = new Stack< Employee >(); // Usa mtodo Push // Parmetros tipo Employee // No requer converso employees.Push( new Employee() ); // Usa mtodo Pop // Retorno tipo Employee // No requer converso Employee employee = employees.Pop(); Stack< int > sizes = new Stack< int >(); // Sem boxing

Pgina: 27

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

sizes.Push( 42 ); // Sem unboxing int size1 = sizes.Pop(); sizes.Push( 77 ); // Error! // Erro em tempo de compilao sizes.Push( new Employee() ); // Cdigo OK int size2 = sizes.Pop();

// Generic MyStack class public class MyStack< T > { private T[] frames; private int pointer = 0; public MyStack( int size ) { frames = new T[ size ]; } public void Push( T frame ) { frames[ pointer++ ] = frame; } public T Pop() { return frames[ --pointer ]; } } MyStack< int > s = new MyStack< int >( 7 ); for ( int f = 0; f < 7; ++f ) s.Push( f );

Pgina: 28

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

// Prints '6 5 4 3 2 1 0 ' for ( int f = 0; f < 7; ++f ) Console.Write( s.Pop() + " " );

class MyList< K, V > where K : IComparable, IFormattable where V : ValueBase, new() { // ... } class ValueBase {} class Widget : ValueBase {} class Thing : ValueBase { public Thing( int i ) {} } // 1 - OK MyList<int, Widget> list1 = new MyList<int, Widget>(); // 2 - Error! MyList<int, string> list2 = new MyList<int, string>(); // 3 - Error! MyList<int, Thing> list3 = new MyList<int, Thing>(); // 4 - Error! MyList<Point, Widget> list4 = new MyList<Point, Widget>();

TraceSource
TraceSource ts = new TraceSource("Source1"); ts.Switch.Levels = SourceLevels.Information;

Pgina: 29

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

Semforo
// Cria um semforo com um contador de 3 Semaphore sem = new Semaphore(3); // Bloqueia at um contador disponvel sem.WaitOne(); // Usa o recurso protegido // Release o semforo sem.Release();

Compresso
// Ler dados compactados de um arquivo string decomp = String.Empty; FileStream fs = new FileStream( @"c:\temp\compress.dat", FileMode.Open, FileAccess.Read, FileShare.Read); GZipStream zipStrm = new GZipStream(fs, CompressionMode.Decompress); using (StreamReader sr = new StreamReader(zipStrm)) { decomp = sr.ReadToEnd(); } Console.WriteLine(decomp);

SecureString
// Cria uma SecureString SecureString ss = new SecureString(); // Adiciona caracteres e trava a string ss.AppendCharacter('a'); ss.AppendCharacter('b'); ss.MakeReadOnly(); // Recupera contedo IntPtr uniString =

Pgina: 30

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

Marshal.SecureStringToGlobalAllocUni(ss); String s = Marshal.PtrToStringUni(uniString); Console.WriteLine("String is '{0}'", s); // Zero e free Marshal.ZeroFreeGlobalAllocUni(uniString);

HttpListener
// Cria um HttpListener HttpListener lst = new HttpListener(); // Adiciona um prefixo para o listener lst.Prefixes.Add( string.Format(" http://localhost/{0}/ ", args[0])); // Inicia o listening lst.Start(); while (true) { // Bloqueia aguardando conexo HttpListenerContext ctx = lst.GetContext(); // Faa algo... }

Porta Serial
using System.IO.Ports; ... SerialPort sp = new SerialPort("COM1", 19200); sp.ReadTimeout = 3000; sp.WriteTimeout = 3000; sp.Open(); ... sp.Read(byteBuff, 0, nBytesToRead);c

Customizao de Culturas
// Cria um novo objeto CultureAndRegionInfoBuilder // baseado em culture en-US CultureAndRegionInfoBuilder carib = new

Pgina: 31

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

CultureAndRegionInfoBuilder( new CultureInfo("en-US"), new RegionInfo("US"), "en", "US", "microsoft"); // Registra nesta mquina no deploy carib.Register(); // Salva em XML carib.Save("c:\temp\myculture.xml"); // Instancia o novo objeto CultureInfo CultureInfo ci = new CultureInfo("en-US-microsoft);

Cdigos Independentes
// using System.Collections; // Employees Stack employees = new Stack(); // Use mtodo Push // Parmetro um objeto // Usa converso implcita employees.Push( new Employee() ); // Usa mtodo Pop // Retorna um objeto // Precisa converter Employee employee = (Employee) employees.Pop(); // Integers Stack sizes = new Stack(); // Box sizes.Push( 42 ); // Unbox int size1 = (int) sizes.Pop(); // Errado mas compila OK sizes.Push( 77 ); sizes.Push( new Employee() ); // Compila OK mas gera

Pgina: 32

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

// InvalidCastException int size2 = (int) sizes.Pop();

Tipos Partial
// Demo.Part1.cs using System; public partial class Demo { public Demo() { Console.Write( "P1" ); } } // Demo.Part2.cs public partial class Demo { private int i; } // Demo.Part3.cs // Erro 1 public class Demo { // Erro 2 private int i; // OK private int j; public void Test() { // Erro 3 Console.Write( "P3" ); } }

Mtodos Anonymous
// C# 1.0 this.saveButton.Click += new EventHandler( this.SaveClick ); private void SaveClick( object sender, Pgina: 33

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

EventArgs e ) { this.Save(); } // C# 2.0 this.saveButton.Click += delegate { this.Save(); }; // using System.Threading; // C# 1.0 Thread task = new Thread( new ThreadStart( this.Background ) ); private void Background() { Trace.Write( "1.0" ); } // C# 2.0 Thread task = new Thread( delegate(){ Trace.Write( "2.0" ); } );

Iterators
public class Payroll : IEnumerable< Emp > { private Emp[] pay; public IEnumerator< Emp > GetEnumerator() { foreach ( Emp e in pay ) yield return e; } public IEnumerable< Emp > Forward { get { return this; } } public IEnumerable< Emp > Reverse

Pgina: 34

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

{ get { // for ( int e = ... yield return pay[ e ]; } } } Payroll p = new Payroll(); foreach ( Emp e in p ) Console.WriteLine( e.Net ); foreach ( Emp e in p.Reverse ) Console.WriteLine( e.Net );

Delegate Inference
// C# 1.0 this.Load += new EventHandler( this.FormLoad ); this.Update( new CallBack( this.MyMethod ) ); // C# 2.0 this.Load += this.FormLoad; this.Update( this.MyMethod );

Qualificador Alias
// C# 2.0 using System; namespace Imaging { public class Console {} public class System { public void Demo() { // Erro! Console.Write("6x9"); // OK global::System.Console Pgina: 35

DCE 1a. Estrella VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005 Autor: Renato I. Haddad (Microsoft Most Valuable Professional)

.Write("42"); } } }

Usando um Provider
using System.Data.Common static DbProviderFactory factory = DbProviderFactories.GetFactory("provider-name") DbConnection con = factory.CreateConnection() DbCommand cmd = con.CreateCommand()

Provider Enumeration DataTable dt = DbProviderFactories.GetFactoryClasses() DbProviderFactory factory = DbProviderFactories.GetFactory(dt.Rows[x]) - ou DbProviderFactory factory = DbProviderFactories.GetFactory( dt.Select("InvariantName='System.Data.SqlClient'") [0]["InvariantName"].ToString());

Schema Discovery API Recebe uma lista dos Schemas: DataTable dt = conn.GetSchema("MetaDataCollections") Recebe um Schema especfico: DataTable dt = conn.GetSchema("collection-name") Recebe detalhes do Schema: DataTable dt = conn.GetSchema("collection-name", restriction-array)

Pgina: 36

Potrebbero piacerti anche