Skip to main content

Posts

Showing posts from 2009

Current Read

These days I am reading about EA patterns. Check the book by Martin Fowler http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-signature/dp/0321127420/ref=sr_1_2?ie=UTF8&s=books&qid=1253946947&sr=1-2-spell

Interface Vs Abstract

Interface.. 1. A class can implement from many interfaces 2. A class may or may not implement all methods of an interface 3. There can no fields in a interface 4. There can be no access modifiers. By default all methods are public. 5. No default implementation allowed in interface 6. Define peripherial abilities of a class which two different types of sub classes can inherit 7. Performance: codes requires more time to find the actual method in a class 8. Adding new method to base interface class would require finding all classes that implement the interface and implementing new method Abstract 1. A class can inherit from only one abstract class 2. A class has to implement all methods of an interface 3. Fields are allowed 4. Different access modifiers are allowed. 5. You can provide default implementations 6. Defines core abilities of a class. 7. Performace: fast 8. Adding new method, we can provide a default implementation for all classes in one base abstract class. A good example can

String.Format

In Microsoft.Net most of the objects implement .ToString() function. This is a very powerful function which returns string representation of underlying object. However if it is overused with concation operators like + in C#, it can have serious performace hit for large application. The problem with concatenation is that it create a new string for every concatenation operator and assigns memory to it. If it is just string concatenation you are looking for, use StringBuilder class instead. A better and Microsoft recomended way of formatting strings is to use String.Format. This is a very powerful funation and you would be amazed by the number of formats it support. Once you get hang of it, you will never go back to using .ToString. Here is an example. Say you wany to display current date time. Your normal code would be Response.write("Todays Date is: " + DateTime.Now.ToString("dd/MM/YYYY")); A better way would be Reponse.Write(String.Format("Todays Date is:{0:dd/

Default Constructors

A default constructor is one with no parameters. If you don't provide one for your class, the compiler will create on default constructor for your class. However if you do provide a constructor with or without any parameters then the compiler doesn't create a default constructor for you.

Implicit Dispose and using statement

In C# you can make sure Dispose is always called for an object, if the object is created within using statment for e.g using(Font onefont = new Font("Courier") { //do something } When the using blocks end, Dispose on the Font will be called automatically. Even if there is exception while creating the object or within the using block, Dispose method will still be called. An implicit finallt block is created for you.