<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Sree's blog </title><subtitle type="html">Blog about debugging and compiler features of C# that is help implement</subtitle><id>http://blogs.msdn.com/sreekarc/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/sreekarc/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2007-04-03T17:47:00Z</updated><entry><title>Joining Halo Team</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2009/09/05/joining-halo-team.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2009/09/05/joining-halo-team.aspx</id><published>2009-09-06T00:05:09Z</published><updated>2009-09-06T00:05:09Z</updated><content type="html">After spending 4 years in the C# compiler team, i have decided its time for me to try something new. A few weeks back i joined in the Halo team and have started my exciting journey there. I won’t be posting anything new about C# in the near future and the don’t know what shareable halo info i will have. Thanks to all the people who read my blog and kept it entertaining, please feel free to ask me any questions. I will certainly try to answer ( or redirect to my ex-colleagues in C#). Moving on to...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2009/09/05/joining-halo-team.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9891844" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author></entry><entry><title>Why Can’t Extension methods on Value Type be curried</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2009/06/25/why-can-t-extension-methods-on-value-type-be-curried.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2009/06/25/why-can-t-extension-methods-on-value-type-be-curried.aspx</id><published>2009-06-25T20:02:01Z</published><updated>2009-06-25T20:02:01Z</updated><content type="html">This is a followup to an post Extension Methods and Curried delegates . I have been recently asked if why Error CS1113: “Extension methods ' Name ' defined on value type ' typename ' cannot be used to create delegates” was added and what does it mean ? Here is the sort version of the story, basically the there is no direct translation to IL that would be correct for the operation( an extension method defined on a value type to be current as an instance method and assigned to a delegate). To try this...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2009/06/25/why-can-t-extension-methods-on-value-type-be-curried.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9803881" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /><category term="Curried Delegates" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Curried+Delegates/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Debugging Dynamic objects in C# Part 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2009/02/24/debugging-dynamic-objects-in-c-part-1.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2009/02/24/debugging-dynamic-objects-in-c-part-1.aspx</id><published>2009-02-25T00:01:00Z</published><updated>2009-02-25T00:01:00Z</updated><content type="html">After a long time spent working on dev 10 features and fixing the may big and small things i have finally had the time to cobble togather a post. What’s this post about ? To begin with i will be talking about debugging dynamic objects. With C# 4.0 we can instantiate and perform operations on objects from dynamic languages like iron python, Iron ruby by using the dynamic keyword. In this post i will show you the tools added to inspection these objects and how one can reuse this for debugging COM objects....(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2009/02/24/debugging-dynamic-objects-in-c-part-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9443161" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Debugging" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Debugging/default.aspx" /><category term="C# 4.0" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_+4.0/default.aspx" /></entry><entry><title>C# Debugging Improvement for VS 2008 SP1- Part II</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2008/06/13/c-debugging-improvement-for-vs-2008-sp1-partii.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2008/06/13/c-debugging-improvement-for-vs-2008-sp1-partii.aspx</id><published>2008-06-14T00:10:00Z</published><updated>2008-06-14T00:10:00Z</updated><content type="html">Anonymous Types On Further review there are a few problems with anonymous-types, they all boil down to the fact the names given to these types are not valid C# type names ( so that users don't explicitly use them in code). But while debugging this is exactly the kind of thing that one wants to do, Consider the following cases Case1: The anonymous type appears in a cast, like when an anonymous type is returned from a function or when its cast from System.Object to the actual type. var obj = Func(...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2008/06/13/c-debugging-improvement-for-vs-2008-sp1-partii.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7188009" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Anonymous" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Anonymous/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Debugging/default.aspx" /></entry><entry><title>C# Debugging Improvements for VS 2008 SP1- Part 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2008/01/21/c-debugging-improvements-for-vs-2008-sp1.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2008/01/21/c-debugging-improvements-for-vs-2008-sp1.aspx</id><published>2008-01-21T23:25:00Z</published><updated>2008-01-21T23:25:00Z</updated><content type="html">Overview Over the past few months I have been busy closing VS 2008 and working on some fixes for SP1. We have enabled some key debugging scenarios in C# in VS 2008 SP1, they include support for Range Variables in Queries &amp;amp; Anonymous Types Generic Type arguments Covering all of them was making the post long so i am going to discuss Range variables this time and continue on with the other 2 in the next post. Range variables Range variables are the variables defined and used in a query. Currently...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2008/01/21/c-debugging-improvements-for-vs-2008-sp1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7079954" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Debugging/default.aspx" /><category term="Range variables" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Range+variables/default.aspx" /></entry><entry><title>Debugging C# 3.0 Part II</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/11/29/debugging-for-c-3-0-part-2.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/11/29/debugging-for-c-3-0-part-2.aspx</id><published>2007-11-30T01:01:00Z</published><updated>2007-11-30T01:01:00Z</updated><content type="html">Overview In the last article I covered the "results view" for lazy evaluated collections like Queries/Enumerable and the use of extension methods in the watch and immediate window. For completeness I will cover stepping, range variables, anonymous types and Xlinq support and this will lead us into the SP1 work for debugging. Stepping Stepping has been extended to support the query execution. That is, when the query is being executed one can step though the query created or add break points for the...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/11/29/debugging-for-c-3-0-part-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6600660" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author></entry><entry><title>Extension methods Interoperability between languages</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/10/11/extension-methods-interoperability-between-languages.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/10/11/extension-methods-interoperability-between-languages.aspx</id><published>2007-10-11T20:58:39Z</published><updated>2007-10-11T20:58:39Z</updated><content type="html">Extension methods written in C# can be imported and called with Extension method semantics in VB and vice versa. This is possible since me decorate the assemblies , types and methods in the same manner. Using the Attribute [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)] public sealed class ExtensionAttribute : Attribute { } This should be a special note to developers writing their own compilers or doing IL gen. This decoration allows the importer to...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/10/11/extension-methods-interoperability-between-languages.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5403218" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Conversion rules for Instance parameters and their impact</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/10/11/consequences-of-conversion-rules-for-instance-parameters.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/10/11/consequences-of-conversion-rules-for-instance-parameters.aspx</id><published>2007-10-11T20:45:39Z</published><updated>2007-10-11T20:45:39Z</updated><content type="html">Overview: Instance parameter is the first parameter of an extension method and has the " this " parameter modifier. I discuss special conversion rules for them and some of the things that users of extension methods might encounter. Consider the code bellow using System; using System.Linq; namespace TestExtensions { class Program { static void Main() { 0.Foo(); // 1 0f.Foo(); 0d.Foo(); A.Foo(0); // 2 A.Foo(0f); A.Foo(0d); } } public static class A { public static void Foo( this long x) { Console .WriteLine(...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/10/11/consequences-of-conversion-rules-for-instance-parameters.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5475548" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Debugging and Delayed Execution in C# 3.0</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/07/12/debugging-and-delayed-execution.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/07/12/debugging-and-delayed-execution.aspx</id><published>2007-07-12T21:55:00Z</published><updated>2007-07-12T21:55:00Z</updated><content type="html">Overview: C# 3.0 added a few constructs like queries which are delay executed. This means that they are not actually executed until the results of the query are required. Debugging some of them can seem strange since one can't step in to the Query where its created but only where its enumerated, like in a foreach loop. In this article i will show some of the problems that the user can face based on the fact that the Query is delay executed and the debugger tries to be as non-intrusive as possible....(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/07/12/debugging-and-delayed-execution.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3835341" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Debugging/default.aspx" /></entry><entry><title>Debugging Features in C# 3.0 Part 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/05/19/debugging-features-in-c-3-0-part-1.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/05/19/debugging-features-in-c-3-0-part-1.aspx</id><published>2007-05-20T07:52:00Z</published><updated>2007-05-20T07:52:00Z</updated><content type="html">Overview C# 3.0 introduces many new constructs and opens entirely new ways of thinking and developing code. In this article I will talk about the new debugging features that make it easy to see the running code and better understand it. In my experience one spends as much time writing the initial code as debugging it later. In fact stepping though the code and inspecting variables and expressions is one of the best ways to understand it. So its not just the original writer but many more who will...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/05/19/debugging-features-in-c-3-0-part-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2745067" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Debugging/default.aspx" /></entry><entry><title>Learning C#</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/05/07/learning-c.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/05/07/learning-c.aspx</id><published>2007-05-07T20:31:00Z</published><updated>2007-05-07T20:31:00Z</updated><content type="html">I was recently asked by a developer "I know C++ how do i get into C# and .Net". If you want to understand the language design and its inner workings I would suggest The C# programing Language . If you want to use .Net and C# try Practical .Net and C# . For the New feature in C#3.0 (lambdas, extension methods, object initilaizers, LINQ etc) check out the 3.0 Spec for the overview and C# site for the latest stuff.(blogs, articles, videos and what not) As with anything write some applications using...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/05/07/learning-c.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2465872" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Extension methods and Curried Delegates</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/05/01/extension-methods-and-delegates.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/05/01/extension-methods-and-delegates.aspx</id><published>2007-05-02T02:19:00Z</published><updated>2007-05-02T02:19:00Z</updated><content type="html">Delegates Since Extension methods behave like instance method it makes sense that we should be able to create delegates that would accept the instance method signature, to this end we have included Adding an Extension Methods to delegate invocation List Extension methods can now be used like an instance methods when being added to a delegate invocation list. So for Extension method Bar defined as static int Bar (this foo f ) { return f.val ; } We will now allow delegates that accept the instance...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/05/01/extension-methods-and-delegates.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2364855" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /><category term="Curried Delegates" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Curried+Delegates/default.aspx" /></entry><entry><title>Extension method Binding and Error reporting</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/04/26/extension-method-binding-and-error-reporting.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/04/26/extension-method-binding-and-error-reporting.aspx</id><published>2007-04-27T06:51:00Z</published><updated>2007-04-27T06:51:00Z</updated><content type="html">Overview: Extension methods are static methods that are bound with instance semantics. In this article i will give a brief overview of the various steps involved in binding a extension methods. Finally this will prepare the way to discuss the error reporting for extension methods and how these error messages can be used to diagnose the problem at hand. All methods calls bound in the compiler go though a 3 phase, The methods to be bound are defined in source or imported, A lookup for their name finds...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/04/26/extension-method-binding-and-error-reporting.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2294900" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /></entry><entry><title>Extension methods in C#</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/04/25/extension-methods.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/04/25/extension-methods.aspx</id><published>2007-04-25T23:50:00Z</published><updated>2007-04-25T23:50:00Z</updated><content type="html">Overview Extension methods are a new feature for C# 3.0 and I had the opportunity to implement them in the Compiler. These methods can then be called with instance syntax on any object that is convertible(see convertibility section for details) to the first param of the method. Validation Extension methods are defined in C# as static class Extensions { public static IEnumerable &amp;lt;T&amp;gt; Where&amp;lt;T&amp;gt;( this IEnumerable &amp;lt;T&amp;gt; sequence, Predicate &amp;lt;T&amp;gt; predicate) { foreach (T item in sequence)...(&lt;a href="http://blogs.msdn.com/sreekarc/archive/2007/04/25/extension-methods.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2276051" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author><category term="Extension Methods" scheme="http://blogs.msdn.com/sreekarc/archive/tags/Extension+Methods/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/sreekarc/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Hello Web</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sreekarc/archive/2007/04/03/hello.aspx" /><id>http://blogs.msdn.com/sreekarc/archive/2007/04/03/hello.aspx</id><published>2007-04-04T03:47:00Z</published><updated>2007-04-04T03:47:00Z</updated><content type="html">&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Who am I?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;My name is Sreekar Choudhary and Welcome to my blog, I am a Dev on the C# compiler Team. I work most of the time&amp;nbsp;on language features and implementing debugging framework for C# developers inside VS.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;What's this blog about? &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Well it’s about the cool features of that I get to design and work on and any other relavent technical topic that is of interest to me or the readers. &lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2022272" width="1" height="1"&gt;</content><author><name>Sree_c</name><uri>http://blogs.msdn.com/members/Sree_c.aspx</uri></author></entry></feed>