Skip to main content

Posts

Which Dictionary object should you use?

Hashtable SortedList String Dictionary List Dictionary Hybrid Dictionary NameValue Collection Retrieved by name Yes Yes Yes Yes Yes Yes Retrieved by Index Yes Yes Yes Yes Yes Yes Sorted by default No Yes No Key type Object String String (Strongly typed) Object Object String/ Integer Value type Object Object String Object Object Object Performance Optimised for fewer than 10 items Uses List Dictionary for small no of item. Changes to Hashtable as list grows Allows multiple value for a key

How to make a Custom Sort Function

You can create your won custome IComparer implementation to control sort order. While IComparable.CompareTo method controls the default sort order for a class, IComparer.Compare can be used to provide custom sort order. For e.g. following class which implements IComapere, provides custom reverse sort public class reverseSort : IComparer { int IComparer.Compare(Object y, Object x) { return ((new CaseInsensitiveComparer()).Compare(x, y)); } } //test class ArrayList al = new ArrayList(); al.AddRange(new String[] {"This", "is", "a", "Amazing", "world", "of", "Collections" }); //default sort order ascending al.Sort(); foreach (object o in al) { Console.WriteLine(o.ToString()); } //custom sort order al.Sort(new reverseSort()); foreach (object o in al) { Console.WriteLine(o.ToString()); }

Error: Could not find installable ISAM

If you are getting error: "Could not find installable ISAM" while you are trying to connect to Excel file using Microsoft Jet OLEDb provider, here are are some possible solutions 1. Check the connection string. This is the most common cause. To connect to Excel file, you have to specify Extended properties in a connection string. The following connection string in a C# rogrram. string conStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; Pay attention to the double inverted commas " for Extended Properties value. If these are missing, you will get above error. Please note becuase " are part of the string you need to use escape character \ for C# for " for VB. 2. If above doesn't solve the problem, try Help -> Detect & Repair in Excel. 3. If you still have problem, try Microsoft solution http://support.microsoft.com/kb/209805 If this doesn't solve t...

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.