SlideShare une entreprise Scribd logo
1  sur  41
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
C# 1.0 C# 2.0 Código   manejado Generics
 
 
class Program { static IEnumerable<int> Range(int start, int count) { for (int i = 0; i < count; i++)  yield return  start + i; } static IEnumerable<int> Squares(IEnumerable<int> source) { foreach (int x in source)  yield return  x * x; } static void Main() { foreach (int i in Squares(Range(0, 10))) Console.WriteLine(i); } } 0 1 4 9 16 25 36 49 64 81
C# 1.0 C# 2.0 C# 3.0 Código   manejado Generics Language Integrated Query (Linq)
 
var contacts = from c in customers where c.State == &quot;WA&quot; select new { c.Name, c.Phone }; var contacts = customers .Where(c => c.State == &quot;WA&quot;) .Select(c => new { c.Name, c.Phone }); Métodos de Extención Expreciones Lambda Query expressions Inicializadores de Objetos Tipos Anónimos Inferencia de tipos en variables locales Expression Trees Propiedades Automáticas Métodos Parciales
 
 
Qué Cómo Imperativo Declarativo
 
 
 
C# 1.0 C# 2.0 C# 3.0 Código   manejado Generics Language Integrated Query C# 4.0 Programación dinámica
 
Python Binder Ruby Binder COM Binder JavaScript Binder Object Binder Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching IronPython IronRuby C# VB.NET Otros…
Calculator  calc = GetCalculator(); int  sum = calc.Add(10, 20); object  calc = GetCalculator(); Type  calcType = calc.GetType(); object  res = calcType.InvokeMember( &quot;Add&quot; , BindingFlags.InvokeMethod,  null , new   object [] { 10, 20 }); int  sum = Convert.ToInt32(res); ScriptObject  calc = GetCalculator(); object  res = calc.Invoke( &quot;Add&quot; , 10, 20); int  sum =  Convert .ToInt32(res); dynamic  calc = GetCalculator(); int  sum = calc.Add(10, 20); Estáticamente  tipado para ser dinámico Invocación dinámica de métodos Conversión dinámica
dynamic  x = 1; dynamic  y =  &quot;Hello&quot; ; dynamic  z =  new   List < int > { 1, 2, 3 }; En tiempo de compilación dynamic En Tiempo de ejecución System.Int32 ,[object Object],[object Object],[object Object],[object Object]
public static class  Math { public   static   decimal  Abs( decimal  value); public   static   double  Abs( double  value); public   static   float  Abs( float  value); public   static   int  Abs( int  value); public   static   long  Abs( long  value); public   static   sbyte  Abs( sbyte  value); public   static   short  Abs( short  value); ... } double  x = 1.75; double  y =  Math .Abs(x);   dynamic  x = 1.75; dynamic  y =  Math .Abs(x);   Método elegido en tiempo de compilación: double Abs(double x) Método elegido en tiempo de ejecución :  double Abs(double x) dynamic  x = 2; dynamic  y =  Math .Abs(x);   Método elegido en tiempo de ejecución :  int Abs(int x)
 
public   StreamReader  OpenTextFile( string  path, Encoding  encoding, bool  detectEncoding, int  bufferSize); public   StreamReader  OpenTextFile( string  path, Encoding  encoding, bool  detectEncoding); public   StreamReader  OpenTextFile( string  path, Encoding  encoding); public   StreamReader  OpenTextFile( string  path); Método primario Sobrecarga secundaria Llama al primario con valores por defecto
public   StreamReader  OpenTextFile( string  path, Encoding  encoding, bool  detectEncoding, int  bufferSize); public   StreamReader  OpenTextFile( string  path, Encoding  encoding =  null , bool  detectEncoding =  true , int  bufferSize = 1024); Parámetros opcionales OpenTextFile( &quot;foo.txt&quot; ,  Encoding .UTF8); OpenTextFile( &quot;foo.txt&quot; ,  Encoding .UTF8, bufferSize: 4096); Argumentos por nombre OpenTextFile( bufferSize: 4096, path:  &quot;foo.txt&quot; , detectEncoding:  false ); Argumentos por nombre al final Los no opcionales deben ser especificados Los Argumentos son evaluados en el orden que se escriben Argumentos por nombre pueden aparecer desorden
object  fileName =  &quot;Test.docx&quot; ; object  missing  = System.Reflection. Missing .Value; doc.SaveAs( ref  fileName, ref  missing,  ref  missing,  ref  missing, ref  missing,  ref  missing,  ref  missing, ref  missing,  ref  missing,  ref  missing, ref  missing,  ref  missing,  ref  missing, ref  missing,  ref  missing,  ref  missing); doc.SaveAs( &quot;Test.docx&quot; );
 
public   abstract   class   DynamicObject  :  IDynamicObject { public   virtual   object  GetMember( GetMemberBinder  info); public   virtual   object  SetMember( SetMemberBinder  info,  object  value); public   virtual   object  DeleteMember( DeleteMemberBinder  info);   public   virtual   object  UnaryOperation( UnaryOperationBinder  info); public   virtual   object  BinaryOperation( BinaryOperationBinder  info,  object  arg); public   virtual   object  Convert( ConvertBinder  info);   public   virtual   object  Invoke( InvokeBinder  info,  object [] args); public   virtual   object  InvokeMember( InvokeMemberBinder  info,  object [] args); public   virtual   object  CreateInstance( CreateInstanceBinder  info,  object [] args);   public   virtual   object  GetIndex( GetIndexBinder  info,  object [] indices); public   virtual   object  SetIndex( SetIndexBinder  info,  object [] indices,  object  value); public   virtual   object  DeleteIndex (DeleteIndexBinder  info,  object [] indices);   public   MetaObject   IDynamicObject .GetMetaObject(); }
 
 
void  Process( object [] objects) { … } string [] strings = GetStringArray(); Process(strings); void  Process( object [] objects) { objects[0] =  &quot;Hello&quot; ;  // Ok objects[1] =  new   Button ();  // Exception! } List < string > strings = GetStringList(); Process(strings); void  Process( IEnumerable < object > objects) { … } .NET arrays are co-variant … but  not safely co-variant Until now, C# generics have been  invariant void  Process( IEnumerable < object > objects) { // IEnumerable<T> is read-only and // therefore safely co-variant } C# 4.0 supports  safe  co- and contra-variance
public   interface   IEnumerable <T> { IEnumerator <T> GetEnumerator(); } public   interface   IEnumerator <T> { T Current {  get ; } bool  MoveNext(); } public   interface   IEnumerable < out  T> { IEnumerator <T> GetEnumerator(); } public   interface   IEnumerator < out  T> { T Current {  get ; } bool  MoveNext(); } out  = Co-variant Output positions only IEnumerable < string > strings = GetStrings(); IEnumerable < object > objects = strings; Can be treated as less derived public   interface   IComparer <T> { int  Compare(T x, T y); } public   interface   IComparer < in  T> { int  Compare(T x, T y); } IComparer < object > objComp = GetComparer(); IComparer < string > strComp = objComp; in  = Contra-variant Input positions only Can be treated as more derived
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Interfaces ,[object Object],[object Object],[object Object],[object Object],[object Object],Delegates
C# 1.0 C# 2.0 C# 3.0 Managed Code Generics Language Integrated Query C# 4.0 Dynamic Programming
Source code Source code Source File Source code Source code .NET Assembly Meta-programming Read-Eval-Print Loop Language Object Model DSL Embedding Compiler Compiler Class Field public Foo private string X
 
 
 
Please fill  out your evaluation for this session at: This session will be available as  a recording at: www.microsoftpdc.com
 
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation.  Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.  MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
 

Contenu connexe

Tendances

More on Classes and Objects
More on Classes and ObjectsMore on Classes and Objects
More on Classes and ObjectsPayel Guria
 
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Abu Saleh
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoThe Software House
 
Category theory, Monads, and Duality in the world of (BIG) Data
Category theory, Monads, and Duality in the world of (BIG) DataCategory theory, Monads, and Duality in the world of (BIG) Data
Category theory, Monads, and Duality in the world of (BIG) Datagreenwop
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingRichardWarburton
 
Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Sumant Tambe
 
Objective-C Crash Course for Web Developers
Objective-C Crash Course for Web DevelopersObjective-C Crash Course for Web Developers
Objective-C Crash Course for Web DevelopersJoris Verbogt
 
Lecture05 operator overloading-and_exception_handling
Lecture05 operator overloading-and_exception_handlingLecture05 operator overloading-and_exception_handling
Lecture05 operator overloading-and_exception_handlingHariz Mustafa
 
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...Sergey Platonov
 
Giorgio zoppi cpp11concurrency
Giorgio zoppi cpp11concurrencyGiorgio zoppi cpp11concurrency
Giorgio zoppi cpp11concurrencyGiorgio Zoppi
 
Advanced javascript
Advanced javascriptAdvanced javascript
Advanced javascriptDoeun KOCH
 
Let the type system be your friend
Let the type system be your friendLet the type system be your friend
Let the type system be your friendThe Software House
 
Machine-level Composition of Modularized Crosscutting Concerns
Machine-level Composition of Modularized Crosscutting ConcernsMachine-level Composition of Modularized Crosscutting Concerns
Machine-level Composition of Modularized Crosscutting Concernssaintiss
 
data Structure Lecture 1
data Structure Lecture 1data Structure Lecture 1
data Structure Lecture 1Teksify
 
Design Patterns Reconsidered
Design Patterns ReconsideredDesign Patterns Reconsidered
Design Patterns ReconsideredAlex Miller
 
High performance web programming with C++14
High performance web programming with C++14High performance web programming with C++14
High performance web programming with C++14Matthieu Garrigues
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesAndrey Karpov
 
Writing Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel SchulhofWriting Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel SchulhofWithTheBest
 

Tendances (20)

More on Classes and Objects
More on Classes and ObjectsMore on Classes and Objects
More on Classes and Objects
 
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
 
Day 1
Day 1Day 1
Day 1
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duo
 
Category theory, Monads, and Duality in the world of (BIG) Data
Category theory, Monads, and Duality in the world of (BIG) DataCategory theory, Monads, and Duality in the world of (BIG) Data
Category theory, Monads, and Duality in the world of (BIG) Data
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)
 
Objective-C Crash Course for Web Developers
Objective-C Crash Course for Web DevelopersObjective-C Crash Course for Web Developers
Objective-C Crash Course for Web Developers
 
Lecture05 operator overloading-and_exception_handling
Lecture05 operator overloading-and_exception_handlingLecture05 operator overloading-and_exception_handling
Lecture05 operator overloading-and_exception_handling
 
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...
Александр Гранин, Функциональная 'Жизнь': параллельные клеточные автоматы и к...
 
Giorgio zoppi cpp11concurrency
Giorgio zoppi cpp11concurrencyGiorgio zoppi cpp11concurrency
Giorgio zoppi cpp11concurrency
 
Advanced javascript
Advanced javascriptAdvanced javascript
Advanced javascript
 
Let the type system be your friend
Let the type system be your friendLet the type system be your friend
Let the type system be your friend
 
Machine-level Composition of Modularized Crosscutting Concerns
Machine-level Composition of Modularized Crosscutting ConcernsMachine-level Composition of Modularized Crosscutting Concerns
Machine-level Composition of Modularized Crosscutting Concerns
 
data Structure Lecture 1
data Structure Lecture 1data Structure Lecture 1
data Structure Lecture 1
 
Design Patterns Reconsidered
Design Patterns ReconsideredDesign Patterns Reconsidered
Design Patterns Reconsidered
 
High performance web programming with C++14
High performance web programming with C++14High performance web programming with C++14
High performance web programming with C++14
 
Constructor,destructors cpp
Constructor,destructors cppConstructor,destructors cpp
Constructor,destructors cpp
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error Examples
 
Writing Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel SchulhofWriting Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel Schulhof
 

En vedette

Newspaper ruben & unai
Newspaper   ruben & unaiNewspaper   ruben & unai
Newspaper ruben & unaienglishpress
 
Financial Crisis Watch 13 June 2009
Financial Crisis Watch 13 June 2009 Financial Crisis Watch 13 June 2009
Financial Crisis Watch 13 June 2009 thinkingeurope2011
 
Ghs chemical listing and documentation of revised idlh values
Ghs chemical listing and documentation of revised idlh valuesGhs chemical listing and documentation of revised idlh values
Ghs chemical listing and documentation of revised idlh valuesTerry Penney
 
Enterprise Cloud Governance: A Frictionless Approach
Enterprise Cloud Governance: A Frictionless ApproachEnterprise Cloud Governance: A Frictionless Approach
Enterprise Cloud Governance: A Frictionless ApproachRightScale
 
필리핀 클락골프투어 안내 골프장 호텔 항공편안내
필리핀 클락골프투어 안내   골프장 호텔 항공편안내필리핀 클락골프투어 안내   골프장 호텔 항공편안내
필리핀 클락골프투어 안내 골프장 호텔 항공편안내Mal-Yong Yoon
 
Acute uterine inversion
Acute uterine inversionAcute uterine inversion
Acute uterine inversionpilocarpine
 
Brachial plexus injuries
Brachial plexus injuriesBrachial plexus injuries
Brachial plexus injuriesZahoor Khan
 

En vedette (7)

Newspaper ruben & unai
Newspaper   ruben & unaiNewspaper   ruben & unai
Newspaper ruben & unai
 
Financial Crisis Watch 13 June 2009
Financial Crisis Watch 13 June 2009 Financial Crisis Watch 13 June 2009
Financial Crisis Watch 13 June 2009
 
Ghs chemical listing and documentation of revised idlh values
Ghs chemical listing and documentation of revised idlh valuesGhs chemical listing and documentation of revised idlh values
Ghs chemical listing and documentation of revised idlh values
 
Enterprise Cloud Governance: A Frictionless Approach
Enterprise Cloud Governance: A Frictionless ApproachEnterprise Cloud Governance: A Frictionless Approach
Enterprise Cloud Governance: A Frictionless Approach
 
필리핀 클락골프투어 안내 골프장 호텔 항공편안내
필리핀 클락골프투어 안내   골프장 호텔 항공편안내필리핀 클락골프투어 안내   골프장 호텔 항공편안내
필리핀 클락골프투어 안내 골프장 호텔 항공편안내
 
Acute uterine inversion
Acute uterine inversionAcute uterine inversion
Acute uterine inversion
 
Brachial plexus injuries
Brachial plexus injuriesBrachial plexus injuries
Brachial plexus injuries
 

Similaire à Lo Mejor Del Pdc2008 El Futrode C#

devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?Kevin Pilch
 
Whats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPontoWhats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPontoPaulo Morgado
 
Is your C# optimized
Is your C# optimizedIs your C# optimized
Is your C# optimizedWoody Pewitt
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy codeShriKant Vashishtha
 
Applying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedApplying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedPascal-Louis Perez
 
Introduction To Csharp
Introduction To CsharpIntroduction To Csharp
Introduction To Csharpg_hemanth17
 
Introduction to-csharp-1229579367461426-1
Introduction to-csharp-1229579367461426-1Introduction to-csharp-1229579367461426-1
Introduction to-csharp-1229579367461426-1Sachin Singh
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharpRaga Vahini
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharpSatish Verma
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharpsinghadarsh
 
Introduction to CSharp
Introduction to CSharpIntroduction to CSharp
Introduction to CSharpMody Farouk
 
Intel JIT Talk
Intel JIT TalkIntel JIT Talk
Intel JIT Talkiamdvander
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?Federico Tomassetti
 
Linq Sanjay Vyas
Linq   Sanjay VyasLinq   Sanjay Vyas
Linq Sanjay Vyasrsnarayanan
 
C# 6.0 - April 2014 preview
C# 6.0 - April 2014 previewC# 6.0 - April 2014 preview
C# 6.0 - April 2014 previewPaulo Morgado
 
IntroToCSharpcode.ppt
IntroToCSharpcode.pptIntroToCSharpcode.ppt
IntroToCSharpcode.pptpsundarau
 
OBJECTS IN Object Oriented Programming .ppt
OBJECTS IN Object Oriented Programming .pptOBJECTS IN Object Oriented Programming .ppt
OBJECTS IN Object Oriented Programming .pptSaadAsim11
 

Similaire à Lo Mejor Del Pdc2008 El Futrode C# (20)

devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?
 
Whats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPontoWhats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPonto
 
Is your C# optimized
Is your C# optimizedIs your C# optimized
Is your C# optimized
 
TechTalk - Dotnet
TechTalk - DotnetTechTalk - Dotnet
TechTalk - Dotnet
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
 
Applying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedApplying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing Speed
 
C# 6.0 Preview
C# 6.0 PreviewC# 6.0 Preview
C# 6.0 Preview
 
Introduction To Csharp
Introduction To CsharpIntroduction To Csharp
Introduction To Csharp
 
Introduction to-csharp-1229579367461426-1
Introduction to-csharp-1229579367461426-1Introduction to-csharp-1229579367461426-1
Introduction to-csharp-1229579367461426-1
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharp
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharp
 
Introduction to csharp
Introduction to csharpIntroduction to csharp
Introduction to csharp
 
Introduction to CSharp
Introduction to CSharpIntroduction to CSharp
Introduction to CSharp
 
Intel JIT Talk
Intel JIT TalkIntel JIT Talk
Intel JIT Talk
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?
 
Linq Sanjay Vyas
Linq   Sanjay VyasLinq   Sanjay Vyas
Linq Sanjay Vyas
 
C# 6.0 - April 2014 preview
C# 6.0 - April 2014 previewC# 6.0 - April 2014 preview
C# 6.0 - April 2014 preview
 
IntroToCSharpcode.ppt
IntroToCSharpcode.pptIntroToCSharpcode.ppt
IntroToCSharpcode.ppt
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
OBJECTS IN Object Oriented Programming .ppt
OBJECTS IN Object Oriented Programming .pptOBJECTS IN Object Oriented Programming .ppt
OBJECTS IN Object Oriented Programming .ppt
 

Plus de Juan Pablo

Azure Function Best Practice
Azure Function Best Practice Azure Function Best Practice
Azure Function Best Practice Juan Pablo
 
Serverless Computing with Azure Functions Best Practices
Serverless Computing with Azure Functions Best PracticesServerless Computing with Azure Functions Best Practices
Serverless Computing with Azure Functions Best PracticesJuan Pablo
 
Serverless Solutions for developers
Serverless Solutions for developersServerless Solutions for developers
Serverless Solutions for developersJuan Pablo
 
Alteryx and Power BI better together
Alteryx and Power BI  better togetherAlteryx and Power BI  better together
Alteryx and Power BI better togetherJuan Pablo
 
Windows Azure VPN Workshop
Windows Azure VPN WorkshopWindows Azure VPN Workshop
Windows Azure VPN WorkshopJuan Pablo
 
Using windows azure to develop secure and deploy cloud applications Santiago ...
Using windows azure to develop secure and deploy cloud applications Santiago ...Using windows azure to develop secure and deploy cloud applications Santiago ...
Using windows azure to develop secure and deploy cloud applications Santiago ...Juan Pablo
 
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)Juan Pablo
 
Windows Azure Queues and Windows Azure Service Bus Queues
Windows Azure Queues and Windows Azure Service Bus QueuesWindows Azure Queues and Windows Azure Service Bus Queues
Windows Azure Queues and Windows Azure Service Bus QueuesJuan Pablo
 
Tech series: Windows Azure Media Services
Tech series: Windows Azure Media ServicesTech series: Windows Azure Media Services
Tech series: Windows Azure Media ServicesJuan Pablo
 
1. keynote Transformando la Nube en una oportunidad de crecimiento
1. keynote Transformando la Nube en una oportunidad de crecimiento1. keynote Transformando la Nube en una oportunidad de crecimiento
1. keynote Transformando la Nube en una oportunidad de crecimientoJuan Pablo
 
Windows Azure Web Sites #wapucolombia
Windows Azure Web Sites #wapucolombiaWindows Azure Web Sites #wapucolombia
Windows Azure Web Sites #wapucolombiaJuan Pablo
 
Windows Azure Media Services WAPU Bogotá
Windows Azure Media Services WAPU BogotáWindows Azure Media Services WAPU Bogotá
Windows Azure Media Services WAPU BogotáJuan Pablo
 
Windows Azure IaaS & vNet
Windows Azure IaaS & vNetWindows Azure IaaS & vNet
Windows Azure IaaS & vNetJuan Pablo
 
Introducción Windows Azure
Introducción Windows AzureIntroducción Windows Azure
Introducción Windows AzureJuan Pablo
 
Introducción soa
Introducción soaIntroducción soa
Introducción soaJuan Pablo
 
Cloud computing explained
Cloud computing explained Cloud computing explained
Cloud computing explained Juan Pablo
 
Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010Juan Pablo
 
Introduccion a la seguridad en Windows Azure
Introduccion a la seguridad en Windows AzureIntroduccion a la seguridad en Windows Azure
Introduccion a la seguridad en Windows AzureJuan Pablo
 
Qué hace un arquitecto de soluciones?
Qué hace un arquitecto de soluciones?Qué hace un arquitecto de soluciones?
Qué hace un arquitecto de soluciones?Juan Pablo
 

Plus de Juan Pablo (20)

Azure Function Best Practice
Azure Function Best Practice Azure Function Best Practice
Azure Function Best Practice
 
Serverless Computing with Azure Functions Best Practices
Serverless Computing with Azure Functions Best PracticesServerless Computing with Azure Functions Best Practices
Serverless Computing with Azure Functions Best Practices
 
Serverless Solutions for developers
Serverless Solutions for developersServerless Solutions for developers
Serverless Solutions for developers
 
Alteryx and Power BI better together
Alteryx and Power BI  better togetherAlteryx and Power BI  better together
Alteryx and Power BI better together
 
Windows Azure VPN Workshop
Windows Azure VPN WorkshopWindows Azure VPN Workshop
Windows Azure VPN Workshop
 
Using windows azure to develop secure and deploy cloud applications Santiago ...
Using windows azure to develop secure and deploy cloud applications Santiago ...Using windows azure to develop secure and deploy cloud applications Santiago ...
Using windows azure to develop secure and deploy cloud applications Santiago ...
 
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)
BizTalk Server, BizTalk Services and Windows Workflow Foundation (WF)
 
Windows Azure Queues and Windows Azure Service Bus Queues
Windows Azure Queues and Windows Azure Service Bus QueuesWindows Azure Queues and Windows Azure Service Bus Queues
Windows Azure Queues and Windows Azure Service Bus Queues
 
Tech series: Windows Azure Media Services
Tech series: Windows Azure Media ServicesTech series: Windows Azure Media Services
Tech series: Windows Azure Media Services
 
1. keynote Transformando la Nube en una oportunidad de crecimiento
1. keynote Transformando la Nube en una oportunidad de crecimiento1. keynote Transformando la Nube en una oportunidad de crecimiento
1. keynote Transformando la Nube en una oportunidad de crecimiento
 
Windows Azure Web Sites #wapucolombia
Windows Azure Web Sites #wapucolombiaWindows Azure Web Sites #wapucolombia
Windows Azure Web Sites #wapucolombia
 
Windows Azure Media Services WAPU Bogotá
Windows Azure Media Services WAPU BogotáWindows Azure Media Services WAPU Bogotá
Windows Azure Media Services WAPU Bogotá
 
Windows Azure IaaS & vNet
Windows Azure IaaS & vNetWindows Azure IaaS & vNet
Windows Azure IaaS & vNet
 
Nubes Privadas
Nubes PrivadasNubes Privadas
Nubes Privadas
 
Introducción Windows Azure
Introducción Windows AzureIntroducción Windows Azure
Introducción Windows Azure
 
Introducción soa
Introducción soaIntroducción soa
Introducción soa
 
Cloud computing explained
Cloud computing explained Cloud computing explained
Cloud computing explained
 
Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010
 
Introduccion a la seguridad en Windows Azure
Introduccion a la seguridad en Windows AzureIntroduccion a la seguridad en Windows Azure
Introduccion a la seguridad en Windows Azure
 
Qué hace un arquitecto de soluciones?
Qué hace un arquitecto de soluciones?Qué hace un arquitecto de soluciones?
Qué hace un arquitecto de soluciones?
 

Dernier

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

Lo Mejor Del Pdc2008 El Futrode C#

  • 1.
  • 2. C# 1.0 C# 2.0 Código manejado Generics
  • 3.  
  • 4.  
  • 5. class Program { static IEnumerable<int> Range(int start, int count) { for (int i = 0; i < count; i++) yield return start + i; } static IEnumerable<int> Squares(IEnumerable<int> source) { foreach (int x in source) yield return x * x; } static void Main() { foreach (int i in Squares(Range(0, 10))) Console.WriteLine(i); } } 0 1 4 9 16 25 36 49 64 81
  • 6. C# 1.0 C# 2.0 C# 3.0 Código manejado Generics Language Integrated Query (Linq)
  • 7.  
  • 8. var contacts = from c in customers where c.State == &quot;WA&quot; select new { c.Name, c.Phone }; var contacts = customers .Where(c => c.State == &quot;WA&quot;) .Select(c => new { c.Name, c.Phone }); Métodos de Extención Expreciones Lambda Query expressions Inicializadores de Objetos Tipos Anónimos Inferencia de tipos en variables locales Expression Trees Propiedades Automáticas Métodos Parciales
  • 9.  
  • 10.  
  • 11. Qué Cómo Imperativo Declarativo
  • 12.  
  • 13.  
  • 14.  
  • 15. C# 1.0 C# 2.0 C# 3.0 Código manejado Generics Language Integrated Query C# 4.0 Programación dinámica
  • 16.  
  • 17. Python Binder Ruby Binder COM Binder JavaScript Binder Object Binder Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching IronPython IronRuby C# VB.NET Otros…
  • 18. Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember( &quot;Add&quot; , BindingFlags.InvokeMethod, null , new object [] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke( &quot;Add&quot; , 10, 20); int sum = Convert .ToInt32(res); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Estáticamente tipado para ser dinámico Invocación dinámica de métodos Conversión dinámica
  • 19.
  • 20. public static class Math { public static decimal Abs( decimal value); public static double Abs( double value); public static float Abs( float value); public static int Abs( int value); public static long Abs( long value); public static sbyte Abs( sbyte value); public static short Abs( short value); ... } double x = 1.75; double y = Math .Abs(x); dynamic x = 1.75; dynamic y = Math .Abs(x); Método elegido en tiempo de compilación: double Abs(double x) Método elegido en tiempo de ejecución : double Abs(double x) dynamic x = 2; dynamic y = Math .Abs(x); Método elegido en tiempo de ejecución : int Abs(int x)
  • 21.  
  • 22. public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize); public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding); public StreamReader OpenTextFile( string path, Encoding encoding); public StreamReader OpenTextFile( string path); Método primario Sobrecarga secundaria Llama al primario con valores por defecto
  • 23. public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize); public StreamReader OpenTextFile( string path, Encoding encoding = null , bool detectEncoding = true , int bufferSize = 1024); Parámetros opcionales OpenTextFile( &quot;foo.txt&quot; , Encoding .UTF8); OpenTextFile( &quot;foo.txt&quot; , Encoding .UTF8, bufferSize: 4096); Argumentos por nombre OpenTextFile( bufferSize: 4096, path: &quot;foo.txt&quot; , detectEncoding: false ); Argumentos por nombre al final Los no opcionales deben ser especificados Los Argumentos son evaluados en el orden que se escriben Argumentos por nombre pueden aparecer desorden
  • 24. object fileName = &quot;Test.docx&quot; ; object missing = System.Reflection. Missing .Value; doc.SaveAs( ref fileName, ref missing,  ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); doc.SaveAs( &quot;Test.docx&quot; );
  • 25.  
  • 26. public abstract class DynamicObject : IDynamicObject { public virtual object GetMember( GetMemberBinder info); public virtual object SetMember( SetMemberBinder info, object value); public virtual object DeleteMember( DeleteMemberBinder info);   public virtual object UnaryOperation( UnaryOperationBinder info); public virtual object BinaryOperation( BinaryOperationBinder info, object arg); public virtual object Convert( ConvertBinder info);   public virtual object Invoke( InvokeBinder info, object [] args); public virtual object InvokeMember( InvokeMemberBinder info, object [] args); public virtual object CreateInstance( CreateInstanceBinder info, object [] args);   public virtual object GetIndex( GetIndexBinder info, object [] indices); public virtual object SetIndex( SetIndexBinder info, object [] indices, object value); public virtual object DeleteIndex (DeleteIndexBinder info, object [] indices);   public MetaObject IDynamicObject .GetMetaObject(); }
  • 27.  
  • 28.  
  • 29. void Process( object [] objects) { … } string [] strings = GetStringArray(); Process(strings); void Process( object [] objects) { objects[0] = &quot;Hello&quot; ; // Ok objects[1] = new Button (); // Exception! } List < string > strings = GetStringList(); Process(strings); void Process( IEnumerable < object > objects) { … } .NET arrays are co-variant … but not safely co-variant Until now, C# generics have been invariant void Process( IEnumerable < object > objects) { // IEnumerable<T> is read-only and // therefore safely co-variant } C# 4.0 supports safe co- and contra-variance
  • 30. public interface IEnumerable <T> { IEnumerator <T> GetEnumerator(); } public interface IEnumerator <T> { T Current { get ; } bool MoveNext(); } public interface IEnumerable < out T> { IEnumerator <T> GetEnumerator(); } public interface IEnumerator < out T> { T Current { get ; } bool MoveNext(); } out = Co-variant Output positions only IEnumerable < string > strings = GetStrings(); IEnumerable < object > objects = strings; Can be treated as less derived public interface IComparer <T> { int Compare(T x, T y); } public interface IComparer < in T> { int Compare(T x, T y); } IComparer < object > objComp = GetComparer(); IComparer < string > strComp = objComp; in = Contra-variant Input positions only Can be treated as more derived
  • 31.  
  • 32.
  • 33. C# 1.0 C# 2.0 C# 3.0 Managed Code Generics Language Integrated Query C# 4.0 Dynamic Programming
  • 34. Source code Source code Source File Source code Source code .NET Assembly Meta-programming Read-Eval-Print Loop Language Object Model DSL Embedding Compiler Compiler Class Field public Foo private string X
  • 35.  
  • 36.  
  • 37.  
  • 38. Please fill out your evaluation for this session at: This session will be available as a recording at: www.microsoftpdc.com
  • 39.  
  • 40. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • 41.  

Notes de l'éditeur

  1. 06/07/09 02:25 © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.