The Future Of C#, Part Five

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 easier for our marketing and user education people to effectively communicate with…


The Future of C#, Part Three: On video, plus the dead-trees edition

Amazingly enough, it has happened again. Why does this keep happening to me? Anders, Mads and Eric on C# 4.0: C# 4.0 with Anders Hejlsberg, Mads Torgersen, and Eric Lippert – Part 1 of 2 C# 4.0 with Anders Hejlsberg, Mads Torgersen, and Eric Lippert – Part 2 of 2 Anders, Mads and Scott on…


The Future of C#, Part Two

Well, I intended to spend the last three weeks blogging about C# design process in anticipation of our announcements at the PDC, and then I got crazy busy at work and never managed to do so! As I’m sure you know by now, we have announced the existence and feature set of that hitherto hypothetical…


The Future of C#, Part One

An attentive reader pointed me at this long thread on a third-party forum where some people are musing about possible future features of C#. There is far, far more here than I possibly have time to respond to in any kind of detail. Also, I am not going to spill the beans. Anders is giving a talk…


Boring Metablogging, Part Two

I try to not blog about blogging. Metablogging is boring. The last time I blogged about blogging was on the subject of “Can I take your blog post and republish it?” My answer then was “yes… but”. That is, yes, but please tell me, please do not maliciously quote me out of context, please link…


Preventing third-party derivation, part two

If you find a class in a library that has all private/internal constructors, it is pretty clear that the author of the class is sending you the deliberate message that this class is not to be extended by you. In our previous example, it was not so clear. Obviously the author of the class in question…


Preventing third-party derivation, part one

In this episode of FAIC, a conversation I had with a C# user recently. Next time, some further thoughts on how to use the CLR security system in this sort of scenario. Him: I have this abstract class defined in one assembly: // Assembly FooBar.DLLpublic abstract class Foo{    internal abstract void DoSomething();// …} I want to…


Arrays considered somewhat harmful

I got a moral question from an author of programming language textbooks the other day requesting my opinions on whether or not beginner programmers should be taught how to use arrays. Rather than actually answer that question, I gave him a long list of my opinions about arrays, how I use arrays, how we expect arrays to be…


Vexing exceptions

Writing good error handling code is hard in any language, whether you have exception handling or not. When I’m thinking about what exception handling I need to implement in a given program, I first classify every exception I might catch into one of four buckets which I label fatal, boneheaded, vexing and exogenous. Fatal exceptions…