C# – Object Initializers

Concise way to initialize a new object (or collection) with values.

Car car1 = new Car() {Make= "BMW", Model="528i", Year=2010};

// No local variable name for the new Car instance needed!

cars.Add(new Car() {Make="BMW", Model="528i", Year=2010});

Collection Initializers

Shortcut to create new instance of a generic collection AND initialize it by IMMEDIATELY adding new instances of given type.

List cars = new List (){

new Car = {Make="BMW", Model= "528i", Year=2010},

new Car = {Make="BMW", Model="745i", Year=2012}

}

C# – Working with List of Collections

Use Generic Collections to work with items in a strongly typed fashion.

Better than arrays:

Know the type of the item for a certainty, no casting / converting

Better performance inserting / removing / updating

Collections provide more flexible actions to access items in the collection.

Allows for LINQ extension methods

Many different type of collections – specialities

“Generic Collections”

List

Dictionary <TKey, TValue>

T => Data type you need

“You make a generic specific by providing a data type”

List – only store strings (strong typed)

List – only store Cars in that collection

//Assume I have three objects: car1, car2, car3

List cars =  new List();

cars.Add(car1);

cars.Add(car2);

cars.Add(car3);

int numberOfCars = cars.Count;

Car myCar = cars.ElementAt(1); // returns second car in the element.

// Terminology: You access a member of a collection.

// LINQ Queries

C# – Static versus Instance Members

Static member – no instance of the class required to call method.

Instance member – must create an instance w/ new keyword to call methods and properties.

Can mix in the same class, but can not reference instance members from inside of static members.

Classes can be decorated w/ static keyword – all members must be static, can not create a new instance of the class.

For Example System.Math

 

C# – Naming Conventions For Identifiers

You will find the general rules for identifiying naming

PascalCase – public

camelCase – private, protected

 

Public classes, methods and properties – PascalCase

Private helper methods, input parameters – camelCase

Locally scoped variables – camelCase

Private field – camelCase prefixed w/ underscore: _firstName

Choose long, memorable, understandable names that convey meaning / intent.

C# – Creating Constructor Methods

Constructor are called at the moment of instantiation. Used to put the new instance of the class into valid state.

public class Foo{
  public Foo{
   ................
  }
}

Whether you define or not, there is a default constructor. You can override the default (no input parameters) or overload the constructor to allow the user  to set the new instance to a valid state.

C# – Accessibility Modifiers, Fields and Properties

Public – Class or member can be accessed by any code.

Private  – Class or member can only be accessed by parent class.

Protected – Class or member can only be accessed by parent class or derived class.

Internal – Class or member can only be accessed by code inside the same assembly.

Classes are internal by default.

Methods and properties are private by default.

Encapsulation – hiding implemantation behind public interfaces, reducing coupling increases plug-ability / reusability, maintainability etc.

private fields have two purposes:

1 – reference to object or variable that used for internal implementation of class

2 – hold the state of an object , backing field for public property.

The shortcut in Visual Studio:
propful [tab] [tab]

private int myField;
property int MyProperty{

  get{return myField;}
  set{
    if(value > 100)
      myField = value;
    else
      //tell the caller that they can not do this
  }
}

Full property definition and private fields to control access to private fields  / state of an object.

propg [tab] [tab]

public int MyProperty{ get; private set;}

Restricts setting of property to just the class internal implementation

More on this topic could be found on microsoft.com

C# – Creating Class Libraries and Adding Reference to Assemblies

Class Library project  – creates a .dll that can be referenced in other projects.

Add a reference – the FCL is split into tiny pieces and you must reference the assemblies that contains the part of the library you want to use.

Right – click projects reference node in Solution Explorer, select Add Reference.

« Older Entries Recent Entries »