C#3.0 & Vb 9.0 Language Enhancments

Embed Size (px)

DESCRIPTION

 

Text of C#3.0 & Vb 9.0 Language Enhancments

  • C# 3.0 and VB 9.0 Language Enhancements of VS2008
  • C# and VB Feature List C# 3.0 VB 9.0 Type Inference Implicitly Typed Arrays Automatic Properties Object Initialisers Collection Initialisers Anonymous Types Partial Methods Type Inference Object Initialisers Anonymous Types Partial Methods Nullable Types If Ternary operator Friend Assemblies Relaxed Delegates
  • Type Inference
  • Implicitly Typed Local variables in VB
    • Type of local variable is inferred from the expression used to initialize the variable
    • Early Bound
  • Option Infer
    • VB has Option Infer to enable or disable the type inference mechanism.
  • Type Inference in C#
    • Declared with var keyword
    • Type of the variable based on the value assigned to it.
    • Following code gives error because compiler cant figure out what type the variable is
  • Insight into var
    • Var is not var as in Javascript
    • Once compiler identifies the type of variable, from then on, it is used as if it is of that type
    • Assigning value of different type will throw compile time error
  • Pros of Type inference
    • Make Code Simpler in case of Generic Types
    • Generics
    C# 2.0 VB 8.0
  • Generics
    • To tailor a method, class, structure or interface to the precise data type that it acts upon.
    • Classes, structures, interfaces, and methods that have placeholders (type parameters) for one or more of the types that they store or use.
    C# VB
  • Generics in C# 2.0 A Type Conversion Error Generics for Type Safety
  • Pros of Type inference
    • Improves Productivity
    • Make Code Simpler
    • (More in Future slides)
  • Cons of Type Inference
    • Dont use for assigning constants to variables of built in types
    • Dont use when the assigning expression does not have a clear type
    • Dont use in case of abstractions
    • (More in future slides)
  • Implicitly Typed Arrays
  • Implicitly typed arrays in C#
    • Form of array creation and initialization that infers the element type of the array from an array initializer.
  • Cons of Implicitly typed arrays
    • One type per array
    • Cannot use null along with value types
  • Automatic Properties
  • Properties in C#
    • Conventional way of declaring Properties
  • Automatic Properties in C#
    • No need to manually declare a private field and write the get/set logic.
    • Compiler can automate creating the private field and the default get/set operations for you
  • Pros and Cons of Automatic Properties
    • Pros
      • Make code simpler
    • Cons
      • Cannot have Readonly or Writeonly properties
  • Object Initialisers
  • Object Instantiation
  • Object Initializers
    • Allow us to initialize an object by invoking its constructor and setting its properties
    C# VB
  • Pros of Object Initialisers
    • Concise object instantiation
    • Can be nested and reduce unwanted variables
  • Collection Initialisers
  • Collection Initialisers
    • Convenient to initialize the array
    • Improves Productivity
  • Pros - Collection Initializers When used along with Object Initialisers Conventional Way
  • Anonymous Types
    • Anonymous Methods
    C# 2.0 VB 8.0
  • Anonymous Methods in C# 2.0
    • Allow Code blocks to be written in-line where delegate values are expected
  • Anonymous Types
    • Allow the creation of inline types without explicitly defining class declaration for the type
    • Compiler creates a new Anonymous type at compile time.
    VB C#
  • Anonymous Types
    • Anonymous types can also infer the field name
    • In this case, a property called Now will be created
  • Pros of Type inference
    • Make Code Simpler
    • Used for creating Anonymous types
    • (More in future slides)
  • Cons of Type Inference
    • Dont use for assigning constants to variables of built in types
    • Dont use when the assigning expression does not have a clear type
    • Dont use in case of abstractions
    • Dont use for smart type inference in loops unless an anonymous type is iterated
  • Partial Methods
    • Partial Types
    C# 2.0 VB 8.0
  • Partial Types in C# 2.0
  • Partial Types in VB 8.0
  • Partial Methods
    • Help in lightweight event handling
    • When a partial method has no body, then it is removed at compile time and is not emitted to metadata.
    • Declared within Partial classes and are indicated by a partial modifier.
    • They must return void and are not marked with Access Modifiers like Private, public, internal
  • Partial Methods in C#
  • Partial Methods in VB
  • Pros and Cons of Partial Methods
    • Pros
      • Method can be split across multiple class files
    • Cons
      • Can have ref parameters but not out parameters
      • Implicitly marked private. Hence cannot be called from outside Partial class
      • Cannot be declared virtual
      • Cannot be marked extern
  • Nullable Types
  • Nullable Types in C# 2.0 Value Types that can be assigned null value
  • Nullable Types in VB 9.0
    • CLR has added run-time support for nullability using the generic type Nullable(Of T As Struct).
    • Using this type we can declare nullable versions of value types such as Integer, Boolean, Date, etc.
  • Nullable Types in VB 9.0
    • VB 9.0 will support three-valued logic and null propagation arithmetic on nullable values.
    • If one of the operands of an arithmetic, comparison, logical or bitwise, shift, string, or type operation is Nothing, the result will be Nothing
    • If both operands are proper values, the operation is performed on the underlying values of the operands and the result is converted to nullable
  • If Ternary operator
  • Ternary Operator
    • Similar to Null Coalesce operator in C# 2.0.
    • If the variable evaluates to Null, then a special value can be assigned using ternaryoperator.
    However the following generates an error. The alternate value given has to match the data type of variable.
  • Friend Assemblies
  • Friend Assemblies
    • Visible inside the assembly in which they are defined.
    • Exposes Friend types to those assemblies which are considered Friend.
    • Declared in the attribute InternalsVisibleTo in System.Runtime.CompilerServices.
  • Friend Assemblies Now the greeting class can be insta