advanced concepts in c#.net