<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx</link><description>When we're designing a new version of the language, something we think about a lot is whether the proposed new features "hang together". Having a consistent "theme" to a release makes it easier for us to prioritize and organize proposals, it makes it</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9052837</link><pubDate>Fri, 07 Nov 2008 22:02:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9052837</guid><dc:creator>Marcel Lamothe</dc:creator><description>&lt;p&gt;What about the immutability stuff you were talking about earlier this year?&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9052883</link><pubDate>Fri, 07 Nov 2008 22:22:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9052883</guid><dc:creator>Gabe Moothart</dc:creator><description>&lt;p&gt;Like Marcel, I was hoping for more support of concurrency-safe patterns like immutable types, etc in c# 4. Version 5 likely won't ship until at least 2012, and by then we'll all be running on 80 cores and concurrency concerns will not be &amp;quot;looming large&amp;quot; but way overdue.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9052939</link><pubDate>Fri, 07 Nov 2008 22:49:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9052939</guid><dc:creator>J. Daniel Smith</dc:creator><description>&lt;p&gt;I was also surprised that there isn't anything about immutable types in C# 4.0.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9052981</link><pubDate>Fri, 07 Nov 2008 23:13:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9052981</guid><dc:creator>Eric Lippert</dc:creator><description>&lt;p&gt;Well, I have been trying to message that immutability, etc, is (1) important and (2) in our future thinking, not our present thinking. Apologies if I messaged that poorly.&lt;/p&gt;
&lt;p&gt;These things take time. A major factor in the design of work for multi-cores is that there is not a consensus in industry or academia as to what the right thing to do is. With query comprehensions, we at least had twenty years of academic research that we could look at which by and large agreed on the right way to go. With concurrent programming there are as many models as there are researchers it seems. :-)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9053024</link><pubDate>Fri, 07 Nov 2008 23:36:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9053024</guid><dc:creator>barrkel</dc:creator><description>&lt;p&gt;I beg to differ on the topic of generics and anonymous delegates being unrelated. That might have been the case in design, but in practice the case is less clear.&lt;/p&gt;
&lt;p&gt;Generics work by restricting the operations available on values of a generic type. When you want to expand on the number of available operations, you need to parameterize by the operation required. And what's the easiest way to supply operations (i.e. code) by parameters? Anonymous delegates and lambdas.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9053050</link><pubDate>Fri, 07 Nov 2008 23:53:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9053050</guid><dc:creator>Jesper</dc:creator><description>&lt;p&gt;Now that the cat's out of the bag, and acknowledging that it's many months out still, periodic updates on the C#-in-C# compiler-as-a-service things Anders mentioned would be an interesting subject. I can't tell you how often I've wanted an official, sponsored full code vocabulary for talking about C# (and with dynamic programming, the cost for trying to make your own or reconcile the existing alternatives rise still). I'm very happy that not just Miguel and part of the Mono team are thinking in these terms but that Anders is involved personally in this as the language designer.&lt;/p&gt;
&lt;p&gt;I'm happy about the C# 4 features although I would have liked more (like readonly automatic properties, an option to ignore out parameters by passing null or actual *class methods* that could be snuck into interfaces the way statics can't), but between MEF, tuples, PFX and Contracts I'm very well served by the framework improvements.&lt;/p&gt;
&lt;p&gt;I hope everyone working on .NET are taking a second to pat themselves on the back these days. Good work!&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9053326</link><pubDate>Sat, 08 Nov 2008 02:57:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9053326</guid><dc:creator>Jeremy Gray</dc:creator><description>&lt;p&gt;@ Eric re: immutability and your comment of &amp;quot;These things take time. A major factor in the design of work for multi-cores is that there is not a consensus in industry or academia as to what the right thing to do is.&amp;quot; I'm afraid I have to disagree. If there were to be one and only one very well-agreed-upon piece of consensus in both industry and academia, and that is that regardless of what other open issues there are around parallelism (and I admit there are plenty), it would be that the ability to declare and ensure immutability is an incredibly good thing when making any effort to go parallel, and for a myriad of reasons. And that's totally ignoring the benefits that immutable types can have even when not trying to go parallel, if only for managing side-effects in order to produce predictable behavior.&lt;/p&gt;
&lt;p&gt;Bringing VB.net features into C# at the expense of features dedicated C# users have long been begging for (eg. non-nullable reference type variables and arguments, immutable types, etc.) is not exactly going to win any favour. Personally, I am trying as hard as I can to be happy with the gift of generic variance goodness, but it is not unlike being a child at Christmas in that it can be hard to enjoy the one good gift you might receive when you look around and all of your other gifts were grandma sweaters. ;)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9053663</link><pubDate>Sat, 08 Nov 2008 07:23:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9053663</guid><dc:creator>Patrick Lioi</dc:creator><description>&lt;p&gt;This is tounge in cheek, but the truth: &amp;quot;*Please* fundamentally change the way I think about programming every couple years!&amp;quot; &lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9053697</link><pubDate>Sat, 08 Nov 2008 07:52:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9053697</guid><dc:creator>Jay Bazuzi</dc:creator><description>&lt;p&gt;I don't think that Eric intended this post as &amp;quot;what features do you wish we were adding in C# 4.0?&amp;quot;, but I'm not going to pass up the opportunity to &lt;/p&gt;
&lt;p&gt;answer that question anyway. :-)&lt;/p&gt;
&lt;p&gt;1. Syntactic sugar for immutable data classes. &lt;/p&gt;
&lt;p&gt;Today, if I want to make a data class, I can either take the easy route (autoprops + no ctor + object initializers), or the safe way (autoprops with private setter + ctor full of tedium + no object initializers allowed), or the very safe way (tedious get-only properties + 'readonly' fields + ctor &lt;/p&gt;
&lt;p&gt;full of tedium + no object initializers). &amp;nbsp;In the very safe way, the property/field name is mentioned 6 times, which violates DRY.&lt;/p&gt;
&lt;p&gt;C# 4.0's named parameters reduces the need for creating multiple ctors, but the ctor is still as tedious to write as before. &amp;nbsp;It also makes the &amp;quot;safe&amp;quot; and &amp;quot;very safe&amp;quot; models nicer at the call site. &amp;nbsp;But I don't see anything that makes the *implementation* any nicer, so I still have to decide between easy and safe. &amp;nbsp;A language change could create a &amp;quot;pit of success&amp;quot;, where creating immutable data types is easy, too. &amp;nbsp;(See, I said &amp;quot;pit of success&amp;quot;, so now Rico will make you do it.)&lt;/p&gt;
&lt;p&gt;2. The ability to refer to 'this' in field initializers. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I often refactor a larger class in to several smaller classes, where each one exists as a field with a specific responsibility but needs to find its way back to the main object. &amp;nbsp;As the language is defined today, I have to initialize these fields in a ctor, while other fields get initialized in field initializers, making my code inconsistent and bug-prone. &amp;nbsp;There are also a few patterns for converting enums to objects that are either awkward or impossible because of this language limitation, but would be great for code structure otherwise. &lt;/p&gt;
&lt;p&gt;In both cases, it seems like a few very small changes to the language would be a big benefit, at least to me.&lt;/p&gt;
&lt;p&gt;Eric, if you want to understand more about my thinking, drop me a mail.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054175</link><pubDate>Sat, 08 Nov 2008 16:32:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054175</guid><dc:creator>Lars</dc:creator><description>&lt;p&gt;Just keep to the list and everything will finally be as great as it once was :)&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.paulgraham.com/diff.html"&gt;http://www.paulgraham.com/diff.html&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>New and Notable 277</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054352</link><pubDate>Sat, 08 Nov 2008 19:49:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054352</guid><dc:creator>Sam Gentile  If (DeveloperTask==Communication &amp;&amp; OS==Windows) </dc:creator><description>&lt;p&gt;jQuery/ASP.NET/ASP.NET AJAX/ASP.NET MVC Visual Studio patched for better jQuery IntelliSense . Yes! Steven&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054356</link><pubDate>Sat, 08 Nov 2008 19:55:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054356</guid><dc:creator>RichB</dc:creator><description>&lt;p&gt;&amp;gt; &amp;quot;Now actually works the way you'd expect it to&amp;quot; is not really a theme that gets people excited, but &lt;/p&gt;
&lt;p&gt;&amp;gt; sometimes you've got to stop running forward at full speed and take some time to fix the existing stuff &lt;/p&gt;
&lt;p&gt;&amp;gt; that is annoying a lot of people.&lt;/p&gt;
&lt;p&gt;Great - so I can now call a base class method from an iterator/anonymous method in a derived class? You can't have 'fix things' as a theme unless you fix this glaring inconsistency.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054441</link><pubDate>Sat, 08 Nov 2008 21:26:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054441</guid><dc:creator>Patrick Smacchia</dc:creator><description>&lt;p&gt;Aside the parallelism/mutability theme, which will be important anyway, another good theme for C#5 could be System.Diagnostics.Contract syntax support at language level. &lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054607</link><pubDate>Sun, 09 Nov 2008 01:28:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054607</guid><dc:creator>Tanveer Badar</dc:creator><description>&lt;p&gt;If I had 100 bucks to spend on various features coming in 4.0+, I would add 10 of my own and put the bet on metaprogrammability.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9054862</link><pubDate>Sun, 09 Nov 2008 04:16:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9054862</guid><dc:creator>Eric Lippert</dc:creator><description>&lt;p&gt;Re: calling base methods from anonymous methods: Yes, we fixed that.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9055400</link><pubDate>Sun, 09 Nov 2008 11:58:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9055400</guid><dc:creator>int19h</dc:creator><description>&lt;p&gt;Given that BCL guys are introducing DbC (&amp;quot;code contracts&amp;quot;) in .NET 4.0, at the library/instrumentation level for now, it would seem logical to me to extend this to full-fledged support on language level (the library-only solution can be rather quirky syntactically - just look at the pains one has to go to write a contract for an interfaec).&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9056602</link><pubDate>Mon, 10 Nov 2008 03:52:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9056602</guid><dc:creator>Ian Marteens</dc:creator><description>&lt;p&gt;&amp;lt;i&amp;gt;2. The ability to refer to 'this' in field initializers. &amp;nbsp;&amp;lt;/i&amp;gt;&lt;/p&gt;
&lt;p&gt;That would be very dangerous, as you need to take evaluation order into account. As a matter of fact, I even doubt CLR would admit it... at least, if you implement it as &amp;quot;normal&amp;quot; field initialization (I mean, before calling a base constructor).&lt;/p&gt;
&lt;p&gt;Instead, I should provide fileld-like initialization for automatic properties.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9056882</link><pubDate>Mon, 10 Nov 2008 08:29:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9056882</guid><dc:creator>Igor</dc:creator><description>&lt;p&gt;Eric, if you are looking for ideas how to enable metaprogramming in C#, you should look at Nemerle where it is already done. See the following links - &lt;a rel="nofollow" target="_new" href="http://nemerle.org"&gt;http://nemerle.org&lt;/a&gt; &amp;nbsp;and &lt;a rel="nofollow" target="_new" href="http://nemerle.org"&gt;http://nemerle.org&lt;/a&gt;/Macros&lt;/p&gt;
&lt;p&gt;For example, Nemerle does not have if-else statement, but it defines it as a macro using quotation operator &amp;lt;[ … ]&amp;gt;&lt;/p&gt;
&lt;p&gt;macro @if (cond, e1, e2)&lt;/p&gt;
&lt;p&gt;syntax (&amp;quot;if&amp;quot;, &amp;quot;(&amp;quot;, cond, &amp;quot;)&amp;quot;, e1, Optional (&amp;quot;;&amp;quot;), &amp;quot;else&amp;quot;, e2) &lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&amp;lt;[ &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;match ($cond) { &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;| true =&amp;gt; $e1 &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;| _ =&amp;gt; $e2&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;} &lt;/p&gt;
&lt;p&gt; &amp;nbsp;]&amp;gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9056900</link><pubDate>Mon, 10 Nov 2008 08:56:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9056900</guid><dc:creator>yumi</dc:creator><description>&lt;p&gt;You need to take a look at Nemerle language (nemerle.org) for .Net. It's something like &lt;/p&gt;
&lt;p&gt;superset of C# language with minimal core. All other features like foreach, if then else etc &lt;/p&gt;
&lt;p&gt;made with macro-system. Its something like right Lisp for .Net :) This language now actively &lt;/p&gt;
&lt;p&gt;supported by RSDN community. I hope that you fill find new fresh ideas about how to add &lt;/p&gt;
&lt;p&gt;metaprogramming at C#.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9057108</link><pubDate>Mon, 10 Nov 2008 12:46:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9057108</guid><dc:creator>ggreig</dc:creator><description>&lt;p&gt;While I'm sure that a meta-programming solution specifically designed for the purpose could be &amp;quot;better&amp;quot; than C++ templates, I would hope that the design would be such that it would be possible to transfer some of the years of community and personal experience from C++ into C#, given the relatively close relationship of the languages.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9057149</link><pubDate>Mon, 10 Nov 2008 13:21:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9057149</guid><dc:creator>Jon Skeet</dc:creator><description>&lt;p&gt;I'd just like to add to Jesper's plea (and Jay's, indirectly) - readonly autoprops would be a significant win from my point of view, *and* give us at least an *easier* route to immutability. I can't see that it would be very hard, either - although I'm aware that what seems simple often isn't, and *any* change requires design work, etc.&lt;/p&gt;
&lt;p&gt;Basically I'd just like to extend automatic properties such that:&lt;/p&gt;
&lt;p&gt;public string Foo { get; readonly set; }&lt;/p&gt;
&lt;p&gt;expanded to:&lt;/p&gt;
&lt;p&gt;private readonly string &amp;lt;&amp;gt;_Foo;&lt;/p&gt;
&lt;p&gt;public string Foo { get { return &amp;lt;&amp;gt;_Foo; } }&lt;/p&gt;
&lt;p&gt;and any assignments to the property within the constructor (the only place they'd be legal) were transformed into assignments to the variable.&lt;/p&gt;
&lt;p&gt;That, combined with the named parameters of C# 4 would make creating immutable types a lot easier. I'm happy to wait for really good support of immutability complete with a declarative syntax and compile-time checking - just help us this one little bit :)&lt;/p&gt;
&lt;p&gt;(I suspect C# 4 is too locked down to allow anything new in at this point, but if there's the slightest chance of getting readonly autoprops, I'm happy to campaign hard for them :)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9057347</link><pubDate>Mon, 10 Nov 2008 16:24:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9057347</guid><dc:creator>stefan.wenig</dc:creator><description>&lt;p&gt;Jon,&lt;/p&gt;
&lt;p&gt;agreed, but there's more: one of the useful feature combination for C#3 was the ability to create simple classes with automatic properties only, without special constructors only using object initializer syntax for instantiation. Now can we have object initializers for immutable objects too, please? I know I'm borderlining the impossible here, because object initializers are just property assignments _after_ the default ctor has been executed. (But in case of a generated default constructor, would that make any difference? OK, maybe it would, because the class might have base classes, and depending on their being auto-generated would be a mess.) But still, getting object initializer syntax for immutable objects would do a lot to reduce code for trivial types _and_ promote immutability. &lt;/p&gt;
&lt;p&gt;How bad would it be to have &amp;quot;readonly&amp;quot; in automatic properties mean &amp;quot;write only via initializers, ctors or object initializers&amp;quot;?&lt;/p&gt;
&lt;p&gt;In some cases this might result in bad things, but how important is it to support the concise automatic property syntax with the proposed readonly extension for those cases? shouldn't simple things be simple, and hard ones merely possible?&lt;/p&gt;
&lt;p&gt;But then again, this might be too surprising for average C# users who don't make it their hobby to study language specs. Just an idea, not thought through.&lt;/p&gt;
&lt;p&gt;Stefan&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9057846</link><pubDate>Mon, 10 Nov 2008 17:37:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9057846</guid><dc:creator>Jon Skeet</dc:creator><description>&lt;p&gt;stefan: With optional and named parameters, you can get object initializer *style* instantiation just with a constructor. The nice thing about object initializers is that they're just translated into standard property accesses - it's pure syntactic sugar. When you break that connection, it becomes tricky.&lt;/p&gt;
&lt;p&gt;I have other suggestions around immutability and object initializers, using builder objects, but that's a different matter (and Eric's already got that suggestion somewhere in his inbox - I'm neither expecting nor requesting any movement on that front).&lt;/p&gt;
&lt;p&gt;I'm hoping that the less we ask for, the more likely we are to get it :)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9057885</link><pubDate>Mon, 10 Nov 2008 18:00:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9057885</guid><dc:creator>stefan.wenig</dc:creator><description>&lt;p&gt;John: you're right, you can get the syntax, but if you include the class definition into the calculation, it won't be nearly as concise. Declaring an immutable class with n properties in n+1 lines (not counting curly braces) would be just great. Yes, this might still be a bad idea in the end, but without seriously discussing it we will never know. I did not ask for it though, it's just an idea.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9058914</link><pubDate>Tue, 11 Nov 2008 02:42:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9058914</guid><dc:creator>Thomas Eyde</dc:creator><description>&lt;p&gt;I wonder when &lt;/p&gt;
&lt;p&gt;var c = Click;&lt;/p&gt;
&lt;p&gt;if (c != null) c(this, EventArgs.Empty);&lt;/p&gt;
&lt;p&gt;will be fixed.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9058938</link><pubDate>Tue, 11 Nov 2008 02:52:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9058938</guid><dc:creator>Eric Lippert</dc:creator><description>&lt;p&gt;You haven't said what's broken.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9059272</link><pubDate>Tue, 11 Nov 2008 07:58:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9059272</guid><dc:creator>Jay Bazuzi</dc:creator><description>&lt;p&gt;To make my life simpler, I initialize my events like this:&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;event EventHandler Click = delegate {};&lt;/p&gt;
&lt;p&gt;Now I don't have to worry about null checks &amp;amp; temporary local copies. &amp;nbsp;Just&lt;/p&gt;
&lt;p&gt; &amp;nbsp; Click(this, EventArgs.Empty);&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9060433</link><pubDate>Tue, 11 Nov 2008 19:24:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9060433</guid><dc:creator>Asad Siddiqi</dc:creator><description>&lt;p&gt;*Please* Dont change the way everything works every year. .Net 1.1 to .Net 2.0 was absolutely OK since the basics were almost the same and it was a smooth transition. .Net to .Net 3.0 is a bit painful for the small scale windows applications developer (Based on WPF and not on windows forms) Yeah I know there is a whole lot more functionality to it and its very very powerful , so OK.&lt;/p&gt;
&lt;p&gt;But please dont change the internal architecture every year, everytiume you do that you looses developers and it is hard to keep up with all the technologies.&lt;/p&gt;
&lt;p&gt;I think including specialized development tools for targetted developers would be a better idea than to change the architecture totally. I am a fan of microsoft development tools and have been using them since 6 years and I only have admiration for them which started with VC++ 5 to .Net 3.5 .&lt;/p&gt;
&lt;p&gt;But I do realize now that things are moving way to fast and my concepts are shaken up REALLY SHAKEN UP with every new release. Things are not the way they used to be !! I think we really need to stabilize a bit + have the support for previous architectures as well (As we dont get the chance to develope with the latest all the time due to client restrictions , hardware restrictions e.t.c. )&lt;/p&gt;
&lt;p&gt;I hope I was able to present my point of view !! I really love development and Microsoft but doesnt want C# to become &amp;quot;Ruby on Rails&amp;quot; . So please dont take all the code away and leave it to configurations, configuring is a whole new language for the developer which is difficult to understand without the underlying architecture which is changing all the time.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9060762</link><pubDate>Tue, 11 Nov 2008 23:36:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9060762</guid><dc:creator>Thomas Eyde</dc:creator><description>&lt;p&gt;@Jay: Nice hack. I've forgotten that one.&lt;/p&gt;
&lt;p&gt;@Erik: The whole observer pattern is broken. The whole point with this pattern is to broadcast information to anyone interested, without knowing how many they are.&lt;/p&gt;
&lt;p&gt;The way events are implemented we have to resort to hacks, as Jay suggests, or we have to check if anyone is really there.&lt;/p&gt;
&lt;p&gt;The much needed null check proves the abstraction is leaky. The need for a temporary variable proves it's not safe.&lt;/p&gt;
&lt;p&gt;All the repetitive code we have to write should have been done by the framework.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9062186</link><pubDate>Wed, 12 Nov 2008 14:35:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9062186</guid><dc:creator>Mark Rendle</dc:creator><description>&lt;p&gt;@Asad: very few of the changes to C# and the BCL are breaking changes. There's no rule that says you have to use WPF, or LINQ, or any of the (incredibly cool) new things that have been added over the last 7 years. And you can pick and choose the ones you do use; my project is still on Windows Forms but makes extensive use of LINQ.&lt;/p&gt;
&lt;p&gt;The fact of the matter is that the software development world is moving very fast at the moment, and C#, as a leading citizen of that world, is obliged to at least try and keep up. Hence the dynamic support in C# 4.0, PFX and Contracts in .NET 4.0, and meta-programming coming in a later C#.&lt;/p&gt;
&lt;p&gt;Personally, I've found that the new models, patterns and capabilities in each version of C# have made me a better programmer by changing the way I think about the way my code.&lt;/p&gt;
&lt;p&gt;As the saying goes, it's better to have something and not need it than to need something and not have it.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9062531</link><pubDate>Wed, 12 Nov 2008 16:15:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9062531</guid><dc:creator>VladD2</dc:creator><description>&lt;p&gt;About last section (about metaprogramming)...&lt;/p&gt;
&lt;p&gt;Eric, excuse me, you ignore two question about Nemerle.&lt;/p&gt;
&lt;p&gt;You can say, you know this language?&lt;/p&gt;
&lt;p&gt;You try to install it (&lt;a rel="nofollow" target="_new" href="http://nemerle.org/Download#CTP_packages"&gt;http://nemerle.org/Download#CTP_packages&lt;/a&gt;)?&lt;/p&gt;
&lt;p&gt;What you think about metasystem of this language?&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9065603</link><pubDate>Thu, 13 Nov 2008 10:26:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9065603</guid><dc:creator>int19h</dc:creator><description>&lt;p&gt;&amp;gt; But I do realize now that things are moving way to fast and my concepts are shaken up REALLY SHAKEN UP with every new release. Things are not the way they used to be !! I think we really need to stabilize a bit + have the support for previous architectures as well &lt;/p&gt;
&lt;p&gt;My impression so far for .NET 4.0 &amp;amp; C# 4.0 is that it is largely what is going on. It is certainly less &amp;quot;revolutionary&amp;quot; than .NET 3.5 (+SP1) / C# 3.0 - more incremental changes, more cleanups, reintegration of currently separate components into the base framework (DLR, PLINQ etc) and so on. &lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9068367</link><pubDate>Fri, 14 Nov 2008 06:44:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9068367</guid><dc:creator>Kor Nielsen </dc:creator><description>&lt;p&gt;Another vote for immutability syntactic sugar...even if that were the only new feature in c# 4.0, I would be very happy.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9074079</link><pubDate>Fri, 14 Nov 2008 19:05:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9074079</guid><dc:creator>Néstor Sánchez</dc:creator><description>&lt;p&gt;My vote too for an immutability feature for C# 4.0.&lt;/p&gt;
&lt;p&gt;Also, I would like to have that &amp;quot;Eval&amp;quot; method shown in the PDC (and not wait until 2012 as suggested by Miguel de Icaza suggested while shown the same (?) in Mono)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9119978</link><pubDate>Tue, 18 Nov 2008 22:59:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9119978</guid><dc:creator>Marcel Popescu</dc:creator><description>&lt;p&gt;Jon, what's wrong with&lt;/p&gt;
&lt;p&gt;public int Something { get; private set; }&lt;/p&gt;
&lt;p&gt;as far as readonly properties go? The fact that you can assign them in methods of this object? (As in, make sure I don't do something stupid with this property?)&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9122260</link><pubDate>Wed, 19 Nov 2008 09:23:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9122260</guid><dc:creator>int19h</dc:creator><description>&lt;p&gt;Marcel, it's both that and the fact that there's no inline initializer for autoproperties.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9123463</link><pubDate>Wed, 19 Nov 2008 13:22:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9123463</guid><dc:creator>Jon Skeet</dc:creator><description>&lt;p&gt;Marcel:&lt;/p&gt;
&lt;p&gt;1) It's not readonly within the class itself - so you have to make sure you're not stupid.&lt;/p&gt;
&lt;p&gt;2) As int19h said, it would also be nice to be able to provide a default value, although that's not quite as big an issue for me.&lt;/p&gt;
&lt;p&gt;3) It's just not immutable then - anything that checks for immutability would either fail on a type with these properties, or have to check to see that the setter really was only called during the constructor.&lt;/p&gt;
&lt;p&gt;4) It can't be a readonly field in the IL while it's got a setter. This may mean the CLR can't make certain optimisations.&lt;/p&gt;
&lt;p&gt;5) It doesn't show intent - I will quite often have a public getter and a private setter for things which I genuinely want to be mutable via other properties/methods. It should be obvious from the code that this is a different matter - that it's a genuinely readonly property which will be set in the constructor and then never touched again.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9131647</link><pubDate>Fri, 21 Nov 2008 12:57:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9131647</guid><dc:creator>int19h</dc:creator><description>&lt;p&gt;Immutability is certainly part of the contract &amp;nbsp;(something that C++ &amp;quot;const&amp;quot; misses, by the way) - it's &amp;nbsp;the distinction between &amp;quot;you can't change it, but it might change by itself (or by someone else)&amp;quot; and &amp;quot;it can't be changed by anyone, period&amp;quot;. At the moment, it's implicit in the code, and you have to explicitly state in the documentation that your type (or a particular property) is really, truly immutable. For fields, that's what &amp;quot;readonly&amp;quot; does (with some caveats, such as &amp;quot;... after constructor runs&amp;quot;). It's just strange that there's no equivalent for properties and classes as a whole.&lt;/p&gt;
&lt;p&gt;Note also that there is a distinction between &amp;quot;all properties are immutable&amp;quot; and &amp;quot;type as a whole is immutable&amp;quot;. This has to do with versioning - if I write a method that returns a reference to my object, which I think is immutable, because all its properties are immutable (but its author thinks otherwise), I might be unpleasantly surprised if, in the next version of that object, it suddenly gets some read/write properties, and my callers will be able to change my internal state! &lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9131838</link><pubDate>Fri, 21 Nov 2008 16:48:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9131838</guid><dc:creator>Halo_Four</dc:creator><description>&lt;p&gt;I really wish that Microsoft would pull a few more language enhancements from the Microsoft Research Cω (C-Omega) project, particularly the concurrency abstractions based on join calculus. &amp;nbsp;In my opinion those language enhancements represent the most elegant solution to many complex concurrency situations.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://research.microsoft.com/comega/"&gt;http://research.microsoft.com/comega/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Asynchronous Methods:&lt;/p&gt;
&lt;p&gt;public async DoSomeWork() { } &amp;nbsp;// async methods automatically execute within another thread&lt;/p&gt;
&lt;p&gt;Joins/Chords:&lt;/p&gt;
&lt;p&gt;public async Put(int y); &amp;nbsp;// at least one async method without a body that acts as a signal queue&lt;/p&gt;
&lt;p&gt;public int Get() &amp;amp; Put(int y) { return y; } // a normal method combined with one or more async methods. &amp;nbsp;Calls to Get require a corresponding call to Put and will block until/unless such a call is queued. &amp;nbsp;The parameters from both methods are available in the method body&lt;/p&gt;
&lt;p&gt;I would also like to see support for explicitly declaring an anonymous type:&lt;/p&gt;
&lt;p&gt;List&amp;lt;struct { int i; string s; }&amp;gt; list = Enumerable.Range(1, 10).Select(val =&amp;gt; new struct { int i; string s; } { val, val.ToString() };&lt;/p&gt;
&lt;p&gt;I would like to see the ability to define mutable members of an anonymous type, which VB.NET already supports:&lt;/p&gt;
&lt;p&gt;var person = new { ID = 1, ref Name = &amp;quot;Bill Gates&amp;quot; }; &amp;nbsp;// Name is a mutable member and is not used when calculating GetHashCode or evaluating equality.&lt;/p&gt;
&lt;p&gt;I would like to see syntax to define an anonymous delegate type, even if it just maps to the corresponding Func&amp;lt;&amp;gt; or Action&amp;lt;&amp;gt; delegate:&lt;/p&gt;
&lt;p&gt;int(int,int) add = (x, y) =&amp;gt; x + y;&lt;/p&gt;
&lt;p&gt;I think some of the tuple functionality from Cω would be useful. &amp;nbsp;I know that .NET 4.0 is due to get official tuple type support that is to be shared between languages (including F#) so perhaps this functionality could be considered?&lt;/p&gt;
&lt;p&gt;var item = new { x = 5, y = &amp;quot;Hello&amp;quot;, z = new { a = 42; b = new Button() } };&lt;/p&gt;
&lt;p&gt;foreach(int number in item.int::*) { ... } &amp;nbsp;// selects all of the int members from the anonymous type, 5 and 42&lt;/p&gt;
&lt;p&gt;The Cω project was an excellent project from which quite a few C# features were derived. &amp;nbsp;I think it still contains a few useful treasures that would benefit us.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9142141</link><pubDate>Tue, 25 Nov 2008 18:35:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9142141</guid><dc:creator>Mike Adkins</dc:creator><description>&lt;p&gt;Assad - I agree with you completely.&lt;/p&gt;
&lt;p&gt;Mark Rendle - You're right also - we are not required to use new technologies like LINQ or WPF. The problem is that as developers we know that there is probably a good chance that these new developments will reduce coding time and offer new features in the long run but we don't know if they are ready for prime time yet.&lt;/p&gt;
&lt;p&gt;I find myself doing a couple of things whenever a new technology like LINQ is made available, &lt;/p&gt;
&lt;p&gt;#1. Does this technology do everything that I can currently with System.Data classes?&lt;/p&gt;
&lt;p&gt;#2. Learn the technology.&lt;/p&gt;
&lt;p&gt;To me No. 1 takes as long as No. 2. It would be nice if whenver a new technology (or syntax change) were incorporated, we didn't have to spend so much time figuring out if it was so much better than currently available stuff. Kind of like the reviews you read on NewEgg when purchasing hardware. The MS development team guys should just come right out and say &amp;quot;YES&amp;quot; or &amp;quot;NO&amp;quot; you need to switch to a new particular methodology. I should be able to go to the main page for LINQ and read the review which says &amp;quot;LINQ is the way to go right now.&amp;quot; or &amp;quot;LINQ is great but you probably shouldn't port everything to LINQ just yet because it lacks support for...&amp;quot;.&lt;/p&gt;
&lt;p&gt;In the end however, I do appreciate the effort the gang at MS and on the blogs is putting into moving forward. It's just seems to get harder to keep up as I get older.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9154953</link><pubDate>Sat, 29 Nov 2008 08:25:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9154953</guid><dc:creator>Fred Derf</dc:creator><description>&lt;p&gt;How about &amp;quot;fixing&amp;quot; what once was the promise of dot net: program once, deploy many - in other words, a CLR for MacOS.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9161089</link><pubDate>Mon, 01 Dec 2008 21:10:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9161089</guid><dc:creator>Ted</dc:creator><description>&lt;p&gt;Releasing a .NET/C# combintation that replaces 90% of all win32 api calls. &amp;nbsp;This is within striking distance given that many win32 based technologies are at &amp;nbsp;or near end of life (e.g., com) and could be replaced with a .NET to win32 api thunk layer. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;SQL Server is a model for this since the've rewritten SQL Server 4.2 (sybase 4.9) from scratch over the SQL Server 7, 8 and 9 releases). &amp;nbsp;MS should be able to do this for large chunks of the win32 api call with the next few service packs to Vista and Server 2008.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9161337</link><pubDate>Mon, 01 Dec 2008 22:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9161337</guid><dc:creator>jemiller</dc:creator><description>&lt;p&gt;This isn't really a language issue, but, since some people brought up concurrency, I would like to see classes like ObservableCollection&amp;lt;T&amp;gt; improved so that they can be used from multiple threads. i.e. you should be able add items to an ObservableCollection on a background thread and have it update the UI/WPF automatically.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9185901</link><pubDate>Tue, 09 Dec 2008 03:27:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9185901</guid><dc:creator>Wes</dc:creator><description>&lt;p&gt;Why not just use snippets for some of the complaints about immutability? &amp;nbsp;It's pretty easy to make a readonly property snippet. &amp;nbsp;I'd then use a code generator myself for all the constructor magic &amp;amp; partial classes, but that's only if I understand the problem correctly.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9228370</link><pubDate>Tue, 16 Dec 2008 23:56:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9228370</guid><dc:creator>shawn</dc:creator><description>&lt;p&gt;I would rather see a release of c# that integrates with SQL Server and Windows in a way that's supports and shares the same view for things like datatypes and hardware devices; through a standard api for stuff like sound and video processing. &lt;/p&gt;
&lt;p&gt;We need api's for multi-touch, speech/sound/video processing, webcam devices etc etc&lt;/p&gt;
&lt;p&gt;WPF and Dynamic syntax is great and all, but adding new stuff is not always what is needed. &lt;/p&gt;
&lt;p&gt;We need better support for things that already exist but are only accessible via criptic Win DLL's and RegEdit settings (or not at all)!!!&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9231220</link><pubDate>Wed, 17 Dec 2008 20:40:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9231220</guid><dc:creator>Ionel Munoz</dc:creator><description>&lt;p&gt;I would like to be able to do the following with generics:&lt;/p&gt;
&lt;p&gt;class A&amp;lt;T&amp;gt; : T&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;In C++ you can do that. In this way you can &amp;quot;decorate&amp;quot; the type T with extended functionnality that can be reused, and still being a T + A.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9245105</link><pubDate>Sun, 21 Dec 2008 08:52:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9245105</guid><dc:creator>Reynard</dc:creator><description>&lt;p&gt;does this means that it is easier to do complex marshalling?&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9245152</link><pubDate>Sun, 21 Dec 2008 09:34:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9245152</guid><dc:creator>SEO Elite</dc:creator><description>&lt;p&gt;Thanks for the informative article&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9246438</link><pubDate>Mon, 22 Dec 2008 09:56:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9246438</guid><dc:creator>DevExec</dc:creator><description>&lt;p&gt;C# is a fantastic language and my congradulations to the entire team!&lt;/p&gt;
&lt;p&gt;Moving forward it would be nice to cleanly define types for variables for their specific purpose...&lt;/p&gt;
&lt;p&gt;declare Int32 Index; Index a = 5, b = 6; Int32 c = a; // throws invalid cast exception for a to c&lt;/p&gt;
&lt;p&gt;Perhaps LINQ also needs to be editable at run-time without requring recompile. This is the main reason I don't use it in development.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9248695</link><pubDate>Tue, 23 Dec 2008 02:30:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9248695</guid><dc:creator>°(n.n)°</dc:creator><description>&lt;p&gt;Well, what I really like from python is tuples, it's a nice way to store data without the tediously need of creating a class or struct just for getting the job done. It'd be great if c# could have a similar implementation, especially now it has strong support with dynamics.&lt;/p&gt;
&lt;p&gt;Well, guess this is just another item for the wish list...&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9249828</link><pubDate>Tue, 23 Dec 2008 15:01:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9249828</guid><dc:creator>Vijendra.1007</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;One new feature which can be implemented is to provide [Encryption] attribute on Class, Methods, Assembly, Namespaces so that the class over which [Encryption] attributre is applied get encrypted. So that no disassembler should be able to view the class. the Decryption algorithm should be kept with CLR which only can decrypt the [encrypted] class at run time. &lt;/p&gt;
&lt;p&gt;The so called LINQ, Var feature is not getting used in any company. People dont use this in their application, except for some rare occasion. &lt;/p&gt;
&lt;p&gt;Microsoft should provide value features.&lt;/p&gt;
&lt;p&gt;They are not providing the feature that can help developer to code fast and easily.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9249870</link><pubDate>Tue, 23 Dec 2008 15:22:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9249870</guid><dc:creator>Masum</dc:creator><description>&lt;p&gt;Microsoft should provide more example soruce code with new release.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9254586</link><pubDate>Sun, 28 Dec 2008 01:30:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9254586</guid><dc:creator>Jeff Lewis</dc:creator><description>&lt;p&gt;&amp;quot;please stop fundamentally changing the way I think about programming every couple years&amp;quot;&lt;/p&gt;
&lt;p&gt;I'm going to up this a bit... and move outside of C# for a moment.&lt;/p&gt;
&lt;p&gt;Consider what happened with Windows Apps, Windows Forms and then Windows Presentation Foundation.&lt;/p&gt;
&lt;p&gt;Each was an improvement over the previous in terms of functionality - but only one was a simplification in implementation (guess which one? :)&lt;/p&gt;
&lt;p&gt;Coming back to C#, WPF broke the Forms model and I'm still not convinced for the better. It's not easier to use. It's not elegant. It's so difficult to design around that even in VS2008, you find yourself typing in a lot of the UI elements by hand. You can use Blend - but now you have to buy a whole separate application to design parts of your app - and it's a design tool that's so different from the prexisting model that basic things that are easy to do in VS2008 directly (like - binding a database table to a data grid in a form) are bewilderingly complicated and require many levels of obscure indirection.&lt;/p&gt;
&lt;p&gt;WPF 'introduced' the notion of attribute manipulation and did it in a very clumsy, non-obvious way. Which was odd because C# and .Net already HAS attributes and a fairly clean and elegant way to manipulate them. WPF broke the very elegant properties model and brought back explicit set/get methods.&lt;/p&gt;
&lt;p&gt;Going back to your the original statement: there are ways to improve and add 'essential' features (but please, there's essential and then there's ESSENTIAL) without throwing everything out the window and starting over. &lt;/p&gt;
&lt;p&gt;What's needed is a feature referee who vets implementation models for new features. A continuity cop (to borrow a term from the comics industry) who reviews new features and how they're to be implemented and looks at the new feature in context of the entire picture and only lets wildly new features in if there really is no other way to fit it into the existing paradigm.&lt;/p&gt;
&lt;p&gt;I think most of us can handle gradual changes and big but isolated changes - LINQ is a good example - if you don't like it - you can stay with typed datasets and table adaptors. But if the only way to get access to animation is to have to completely turn your application on its head and graft in ugly things like XAML...&lt;/p&gt;
&lt;p&gt;Well, people will complain.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9255777</link><pubDate>Mon, 29 Dec 2008 18:22:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9255777</guid><dc:creator>SkyBeaver</dc:creator><description>&lt;p&gt;I am becoming increasingly alarmed at the pace of changes to the C# language. &amp;nbsp;Many of them seem to be made without a clear business justification. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;Because Java has it&amp;quot; is not a business justification for a feature. &amp;nbsp;For that matter,&lt;/p&gt;
&lt;p&gt;neither is &amp;quot;because Java doesn't have it&amp;quot;.&lt;/p&gt;
&lt;p&gt;I finished my CS graduate work in 1987 and entered industry writing UNIX-based database code in C and C++. &amp;nbsp;At the time, IBM's application development frameworks dominated business computing, and yet were an insane mish-mash of partially-interoperable pieces. &amp;nbsp;The lack of clarity in IBM's vision -- it made sense to them but hardly anyone else&lt;/p&gt;
&lt;p&gt;-- is what made them vulnerable.&lt;/p&gt;
&lt;p&gt;In contrast, C, C++, UNIX, and later Windows offered refreshing clarity. &amp;nbsp;IBM's crazy quilt of aplication&lt;/p&gt;
&lt;p&gt;technologies quickly went from dominant to a historical footnote. &amp;nbsp;They got clobbered because&lt;/p&gt;
&lt;p&gt;their excessively complex vision made sense only inside their own company walls.&lt;/p&gt;
&lt;p&gt;Another example of a too-clever-by-half language from around that time was Ada, which again C# is beginning to resemble. &amp;nbsp;It was a patchwork quilt of features that a committee of academians and&lt;/p&gt;
&lt;p&gt;&amp;quot;O-O Hezbollah&amp;quot; types all thought the world needed.&lt;/p&gt;
&lt;p&gt;I am beginning to see a lot of similarities between Microsoft in 2008 and IBM in 1987. &amp;nbsp;I&lt;/p&gt;
&lt;p&gt;urge the language team to slow down, take a deep breath, and think about the C# platform&lt;/p&gt;
&lt;p&gt;in terms of simplicity, consistency, and coherence. &amp;nbsp;Leave the boutique language features&lt;/p&gt;
&lt;p&gt;to the boutique languages. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;There is a reason that we're all not programming in Ada today. &amp;nbsp;As Jerry Seinfeld once said, &amp;quot;the&lt;/p&gt;
&lt;p&gt;road less travelled ... is less travelled for a reason&amp;quot;.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9256023</link><pubDate>Mon, 29 Dec 2008 21:44:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9256023</guid><dc:creator>Néstor Sánchez</dc:creator><description>&lt;p&gt;I am becoming increasingly alarmed at the comments about slow down the good paced evolution of the C# language by some guys saying &amp;quot;i cannot go so fast, so slow down everybody&amp;quot;. And I say &amp;quot;good paced&amp;quot; considering the need to -right now- take advantage of the emerging technologies (i.e. multi-core, multi-touch, cloud computing).&lt;/p&gt;
&lt;p&gt;Right a few weeks ago, I was required for develop a web application for project management (you know... tasks, schedules, time consumption, people and other resources) and was fortunate to have Silverlight 2, C#, XAML, LINQ, etc. for concluding with a very good product and on schedule.&lt;/p&gt;
&lt;p&gt;I think the complains about delivering frequently (in a subjective timescale) new versions of C#, tools or other techs are related to a problem of management of certain (I don't even believe the most of) companies. They should invest on training their developers, and the learning curve will be compensated by the productivity gain.&lt;/p&gt;
&lt;p&gt;So... &amp;nbsp;welcome the innovations on the 18 months dev cycle.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9257642</link><pubDate>Wed, 31 Dec 2008 00:29:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9257642</guid><dc:creator>Andrew Ducker</dc:creator><description>&lt;p&gt;I'd like to see support for a ThisType in Generics. &amp;nbsp;Being able to create a factory method in my class that returns an object of that type is something that comes up on a regular basis, and it would be nice if there was a way of being able to avoid having every subclass specify its own type. &amp;nbsp;It would also make the Singleton pattern simpler to code.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9258538</link><pubDate>Wed, 31 Dec 2008 17:37:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9258538</guid><dc:creator>K Ray</dc:creator><description>&lt;p&gt;Through my many years of programming I have concluded that it is important to use the right language for the job. &amp;nbsp;For example... when speed is critical, C or Assembly is preferred. &amp;nbsp;Lisp is good choice for computer generated code. &amp;nbsp;... and the list goes on. &amp;nbsp;One of the fundamental beauties of Visual Stuido is the ability to program and combine many languages into one application. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;There is an old saying... Too many hands in the pot will spoil the stew. &amp;nbsp;C# is a great language as it is today. &amp;nbsp;Trying to make it the only language in the world by adding every possible language feature that any developer would ever need is going to... spoil the stew. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think that MS should focus more on making language integration easier rather than trying to shoe-horn everything into one language. &amp;nbsp;After all... all languages end up running on the same machine and in the case of Visual Studio, running through the same compiler. &amp;nbsp;Why can't they all 'just get along'?&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9258864</link><pubDate>Wed, 31 Dec 2008 22:59:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9258864</guid><dc:creator>Edgar</dc:creator><description>&lt;p&gt;I would love to see C# better address Concurent programming.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9268702</link><pubDate>Fri, 02 Jan 2009 12:45:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9268702</guid><dc:creator>jyr</dc:creator><description>&lt;p&gt;I would like to see more improvements on metaprogramming&lt;/p&gt;
&lt;p&gt;Consider this code, how to get rid of the duplication?&lt;/p&gt;
&lt;p&gt;namespace Utils&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;	public static class Utils&lt;/p&gt;
&lt;p&gt;	{&lt;/p&gt;
&lt;p&gt;		public static Action UICtx(this Control control, Action func)&lt;/p&gt;
&lt;p&gt;		{&lt;/p&gt;
&lt;p&gt;			return delegate()&lt;/p&gt;
&lt;p&gt;			{&lt;/p&gt;
&lt;p&gt;				if (control.InvokeRequired)&lt;/p&gt;
&lt;p&gt;					control.Invoke(func);&lt;/p&gt;
&lt;p&gt;				else&lt;/p&gt;
&lt;p&gt;					func();&lt;/p&gt;
&lt;p&gt;			};&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;		public static Action&amp;lt;T&amp;gt; UICtx&amp;lt;T&amp;gt;(this Control control, Action&amp;lt;T&amp;gt; func)&lt;/p&gt;
&lt;p&gt;		{&lt;/p&gt;
&lt;p&gt;			return delegate(T a)&lt;/p&gt;
&lt;p&gt;			{&lt;/p&gt;
&lt;p&gt;				if (control.InvokeRequired)&lt;/p&gt;
&lt;p&gt;					control.Invoke(func, new object[] { a });&lt;/p&gt;
&lt;p&gt;				else&lt;/p&gt;
&lt;p&gt;					func(a);&lt;/p&gt;
&lt;p&gt;			};&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;		public static Action&amp;lt;T1, T2&amp;gt; UICtx&amp;lt;T1, T2&amp;gt;(this Control control, Action&amp;lt;T1, T2&amp;gt; func)&lt;/p&gt;
&lt;p&gt;		{&lt;/p&gt;
&lt;p&gt;			return delegate(T1 a1, T2 a2)&lt;/p&gt;
&lt;p&gt;			{&lt;/p&gt;
&lt;p&gt;				if (control.InvokeRequired)&lt;/p&gt;
&lt;p&gt;					control.Invoke(func, new object[] { a1, a2 });&lt;/p&gt;
&lt;p&gt;				else&lt;/p&gt;
&lt;p&gt;					func(a1, a2);&lt;/p&gt;
&lt;p&gt;			};&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;		public static Action&amp;lt;T1, T2, T3&amp;gt; UICtx&amp;lt;T1, T2, T3&amp;gt;(this Control control, Action&amp;lt;T1, T2, T3&amp;gt; func)&lt;/p&gt;
&lt;p&gt;		{&lt;/p&gt;
&lt;p&gt;			return delegate(T1 a1, T2 a2, T3 a3)&lt;/p&gt;
&lt;p&gt;			{&lt;/p&gt;
&lt;p&gt;				if (control.InvokeRequired)&lt;/p&gt;
&lt;p&gt;					control.Invoke(func, new object[] { a1, a2, a3 });&lt;/p&gt;
&lt;p&gt;				else&lt;/p&gt;
&lt;p&gt;					func(a1, a2, a3);&lt;/p&gt;
&lt;p&gt;			};&lt;/p&gt;
&lt;p&gt;		}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9271238</link><pubDate>Sun, 04 Jan 2009 15:40:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9271238</guid><dc:creator>GuyO</dc:creator><description>&lt;p&gt;How about finally providing and overrideable assignment operator....&lt;/p&gt;
&lt;p&gt;immagine a vector that represents a physical quantity -- mass, length, time, charge&lt;/p&gt;
&lt;p&gt;a speed would be represent by 0,1,-1,0 &amp;nbsp; &amp;nbsp; =&amp;gt; length / time&lt;/p&gt;
&lt;p&gt;the arithmetic operators could be overriden such that a division of a speed vector 0,1,-1,0 by a time vector 0,0,1,0 would result in an acceleration 0,1,-2,0 &amp;nbsp;=&amp;gt; length/ time^2&lt;/p&gt;
&lt;p&gt;this can all be done now except for the dimensional checks made during the assignment -- there's current no way to insure that the result of a speed / time computation is assigned to an acceleration....&lt;/p&gt;
&lt;p&gt;you could even get really slick and check atrributes to insure the the correct MKS, meters kilograms, seconds and CGS centimerters, grams seconds checks were made &amp;nbsp;( attributes work fine here).&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9282310</link><pubDate>Mon, 05 Jan 2009 20:29:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9282310</guid><dc:creator>Joe Reddy</dc:creator><description>&lt;p&gt;I know Microsoft likes to go for the grand and the exciting, but how about more practical stuff?&lt;/p&gt;
&lt;p&gt;I don't have the largest developers circle, but I know of absolutely no one in a circle of 50 or so who uses LINQ, or cares about binding to anything on a user interface, etc. &lt;/p&gt;
&lt;p&gt;How about something as simple as an optional compiler warning telling me when an argument is not being used in a method, or if the value returned by a method (function) does not have a variable assigned, etc.&lt;/p&gt;
&lt;p&gt;And ditto what Sky Beaver said.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9282585</link><pubDate>Mon, 05 Jan 2009 21:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9282585</guid><dc:creator>Brian Womack, PhD</dc:creator><description>&lt;p&gt;I'd REALLY like to see support for generic classes and operators as first class entities. &amp;nbsp;To see what I mean, try to write a generic class for Matrices that support all operators you might want to overload: +, -, *, /, ^. &amp;nbsp;This is not allowed in C# 3.0. &amp;nbsp;You end up creating two copies of the class for float and double.&lt;/p&gt;
&lt;p&gt;I believe this can be done with a 'where' clause in the class declaration that lets you list the types supported: &amp;nbsp;i.e. where T is float, double, int, long, uint, ulong.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9285636</link><pubDate>Tue, 06 Jan 2009 18:11:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9285636</guid><dc:creator>Svavar</dc:creator><description>&lt;p&gt;I'd like to put my vote in for parallelism (however it's implemented).&lt;/p&gt;
&lt;p&gt;Quad core processors will be ubiquitous in the next 12 months (if not sooner) and dual-quad as well as 6 &amp;amp; 8 core processors are just around the corner so I'd say parallelism is already here.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9302205</link><pubDate>Fri, 09 Jan 2009 19:56:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9302205</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;I love the extensions for 3.0, I hope the extensions for 4.0 get just as good!&lt;/p&gt;
&lt;p&gt;@other Thomas &amp;nbsp;&amp;amp; Jay. In C# 3.0 this can be done very nicely like so:&lt;/p&gt;
&lt;p&gt;Extension method&lt;/p&gt;
&lt;p&gt;public static class EventStuff&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public static void Raise(this EventHandler handler, object sender, EventArgs args)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ if (handler != null) handler(sender, args); }&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//and others&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;and call your events like this&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public event EventHandler MyEvent;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected virtual void OnMyEvent(EventArgs args)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ MyEvent.Raise(this, args); }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;In this way you don't waste memory and CPU time.&lt;/p&gt;
&lt;p&gt;Personaly I'd realy like a non-nullable reference type. Something like:&lt;/p&gt;
&lt;p&gt;object! x = null; //generates an exception&lt;/p&gt;
&lt;p&gt;And an extended coalesce operator. possibly:&lt;/p&gt;
&lt;p&gt;int x = a.b.c.d.e !! 0 ; //x would become 0 if any of a, b, c, d or e would be null.&lt;/p&gt;
&lt;p&gt;Treat lambda's, delegates and methods like values properly.&lt;/p&gt;
&lt;p&gt;So that their hash values don't only depend on the signature and delegates generated with the&lt;/p&gt;
&lt;p&gt;same code tree can be sensibly compared for equality.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9307350</link><pubDate>Mon, 12 Jan 2009 12:15:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9307350</guid><dc:creator>Reineir Post</dc:creator><description>&lt;p&gt;GuyO: nooo! Now I can read assignments and understand what they mean without having to be familiar with the classes involved. &amp;nbsp;Please, C#, keep it that way.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9383458</link><pubDate>Thu, 29 Jan 2009 21:12:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9383458</guid><dc:creator>Robert Goerss</dc:creator><description>&lt;p&gt;Interesting article, Eric.&lt;/p&gt;
&lt;p&gt;Finding the happy medium between sweeping change and stagnation is a consideration that we are all faced with as developers regardless of who our target audience is. &amp;nbsp;I found it surprising to hear just the extent of this issue as it relates to further C# development given the relatively advanced target audience that your team has. &amp;nbsp;It prompted me to share some of my own thoughts and perspective on the topic as someone whose target audience is often not even computer literate: &lt;a rel="nofollow" target="_new" href="http://icrontic.com/forum/blog.php?b=115"&gt;http://icrontic.com/forum/blog.php?b=115&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Rob&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9444001</link><pubDate>Wed, 25 Feb 2009 15:36:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9444001</guid><dc:creator>Nick</dc:creator><description>&lt;p&gt;Virtual Constructors would be real nice.&lt;/p&gt;
&lt;p&gt;Pity Anders didnt bring this concept in from Delphi.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9444578</link><pubDate>Wed, 25 Feb 2009 23:51:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9444578</guid><dc:creator>Lee Grissom</dc:creator><description>&lt;p&gt;To build on top of what Nick said, &amp;quot;Virtual Class Methods&amp;quot; would solve a few problems that I've had over the years with C#. &amp;nbsp;I could then do virtual static classes. &amp;nbsp;Anders Hejlsberg designed this capability into Delphi, so I'm curious as to why it has been omitted from C# for so long.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9459839</link><pubDate>Thu, 05 Mar 2009 17:39:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9459839</guid><dc:creator>Peter Herschel</dc:creator><description>&lt;P&gt;Disposal&lt;/P&gt;
&lt;P&gt;I'd love to see the need for directly calling Dispose() go away. So much code plumbing code in such an advanced language! &amp;nbsp; There must be away to improve this whole issue. &amp;nbsp;Maybe Dispose could be called automaticlly.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;That's what the "using" statement is for -- Eric&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Object Oriented&lt;/P&gt;
&lt;P&gt;I'd love to see improvements in the language that help limit scope. &amp;nbsp;Example: class fields that are used to serve up properties. &lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;How is that different from auto props? -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Deterministic Lifetimes&lt;/P&gt;
&lt;P&gt;A language feature to add to a class? &amp;nbsp;Is there a role in C# for this concept and still maintain performance.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;That's what the "using" statement is for -- Eric&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Revisit Existing Features&lt;/P&gt;
&lt;P&gt;There is a tendacy to forget about features that were released in previous version. These are often the basis for much of the languages use: &lt;/P&gt;
&lt;P&gt;* SqlClient&lt;BR&gt;* Forms&lt;BR&gt;* Click Once&lt;BR&gt;* Crsytal Reports&lt;/P&gt;
&lt;P&gt;These would greatly benifit from some updating.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;Sure. But none of those are language features. -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;-Pete&lt;/P&gt;</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9484045</link><pubDate>Tue, 17 Mar 2009 19:40:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9484045</guid><dc:creator>mastermemorex</dc:creator><description>&lt;p&gt;A scope about the popularity of different programming languages can be found here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my opinion that improvemets, although interested, &amp;nbsp;unlikely sky rocks today's low popularity of C#. &amp;nbsp;I would like to change &amp;quot;please stop fundamentally changing the way I think about programming every couple years!&amp;quot; for &amp;quot;please stop telling me what you think is the best way of programming and give me a language for programming the way I would like&amp;quot;. In my opinion, any improvement that is not stick with the best performance is not worthly enough. &lt;/p&gt;
&lt;p&gt;I would like to see solved &amp;quot;the struct pointer juju problem&amp;quot;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;static void Foo&amp;lt;T&amp;gt;(T value) where T is struct&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;uint size = sizeof(T); //Error 1. Cannot take the address of, get the sizeof…&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;This is a basic and large demanded feature that of the language. Also some level of inheritation of fields for structures would be a huge improvement of the language.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9532796</link><pubDate>Mon, 06 Apr 2009 04:36:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9532796</guid><dc:creator>Alan</dc:creator><description>&lt;p&gt;We are witnessing a machine processing performance explosion in action today and over the next few years it is set to accelerate - increasing core count, Larabbee etc are prime examples. &amp;nbsp; &amp;nbsp;The days of boost via GHz uplift are gone. &amp;nbsp; &amp;nbsp;One (not the only one I grant you) of the historic arguments for C and C++ over C# and other CLR based languages has always been their efficiency. &amp;nbsp; For many classes of applications this advantage is likely to shift more from code level efficiency to who can best implement optimisation at the higher level - i.e. Parallelism. &amp;nbsp; &amp;nbsp;In future, performance optimisation effort in developing our applications may possibly be best spent at this level and it will need best of breed support to do so. &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;At a lower level, for some classes of application the parallelism boost will also come from &amp;nbsp;wide vector SIMD processing - 128 bits on today's CPUs and 512 bits on Larrabee I'm lead to believe - and how long before it is made wider on mainstream CPUs? &amp;nbsp; &amp;nbsp;This is currently completely ignored by the CLR targeting languages including the CLR version of C++ - why? &amp;nbsp; &lt;/p&gt;
&lt;p&gt;The battle ground for future Applications winning or losing may well be fought over who best leverages these increasingly accelerating processing resources. &amp;nbsp; &amp;nbsp; I actually like what some have described as the &amp;quot;boutique&amp;quot; &amp;nbsp;C# language changes, but I am also fearful for C#'s future - if it cannot provide ease and reliable leveraging of the huge processing potential, then C# apps will fail to compete in both the applications generated from it and C# will fail in its battle with the other languages.&lt;/p&gt;
&lt;p&gt;My customers do not care if my staff are using Linq under the bonnet to talk to the database or internal data or not, or using the latest Generic Constructs, or more elegantly implemented patterns. &amp;nbsp; &amp;nbsp;They will care when my competitors reliably bring out a 5, 10 or 20 &amp;nbsp;(in 10 years?)... times performance boost. &amp;nbsp; &amp;nbsp;I have always liked C# as a developer and C# for its productivity as a company owner, &amp;nbsp;and I have always hated the fact that it always plays second fiddle to C and C++ for crunching power and perceived performance.&lt;/p&gt;
&lt;p&gt;I appreciate the new &amp;quot;Parallel For&amp;quot; etc, but the C# team (and CLR and VS team) need to continue to heavily invest effort in parallel processing leverage (coding, debugging, parallel processing run time analysis etc) and although I appreciate that C# (and CLR) have some of its roots in the &amp;quot;safe programming&amp;quot; and metal independent paradigm, I would really like to see it recognise the blossoming SIMD capabilities of the hardware. &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let's put on hold for a little while some of the more &amp;quot; boutique&amp;quot; or &amp;quot;ivory tower&amp;quot; language changes and really arm C# with the weapons for the performance battle that is coming.&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9888727</link><pubDate>Fri, 28 Aug 2009 21:15:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9888727</guid><dc:creator>Bryan</dc:creator><description>&lt;p&gt;@mastermemorex: you can do this:&lt;/p&gt;
&lt;p&gt;static void Foo&amp;lt;T&amp;gt;(T value) where T is struct&lt;/p&gt;
&lt;p&gt; &amp;nbsp; {&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; int size = Marshal.SizeOf(value);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // or Marshal.SizeOf(typeof(T));&lt;/p&gt;
&lt;p&gt; &amp;nbsp; }&lt;/p&gt;
</description></item><item><title>re: The Future Of C#, Part Five</title><link>http://blogs.msdn.com/ericlippert/archive/2008/11/07/the-future-of-c-part-five.aspx#9895493</link><pubDate>Tue, 15 Sep 2009 20:23:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895493</guid><dc:creator>ShuggyCoUk</dc:creator><description>&lt;p&gt;* non nullable types backed into the language would be the biggest win for me. (I would favour a compiler switch to move a project to not nullable by default and then allow the ! syntax (or ? for consistency with Nullable, albeit perhaps with confusion so ambivalent there) for nullable parameters and variables.&lt;/p&gt;
&lt;p&gt;* After than enum constraint (though Jon's unconstrained melody might work around that for quite a few scenarios)&lt;/p&gt;
&lt;p&gt;* generic constraints on static operators will full JIT optimization down to specific instructions for native types &lt;/p&gt;
</description></item></channel></rss>