Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Eric Lippert's Erstwhile Blog
Why is deriving a public class from an internal class illegal?
In C# it is illegal to declare a class D whose base class B is in any way less accessible than D....
Date: 11/13/2012
It's still essential!
I am pleased to announce that Essential C# 5.0 by Mark Michaelis, and, new for this edition, yours...
Date: 11/09/2012
Dynamic contagion, part two
Last time I discussed how "dynamic" tends to spread through a program like a virus: if an expression...
Date: 11/08/2012
A method group of one
I'm implementing the semantic analysis of dynamic expressions in Roslyn this week, so I'm fielding a...
Date: 10/22/2012
Is C# a strongly typed or a weakly typed language?
Presented as a dialogue, as is my wont! Is C# a strongly typed or a weakly typed language? Yes. That...
Date: 10/15/2012
Does Not Compute
One of the most basic ways to think about a computer program is that it is a device which takes in...
Date: 10/10/2012
How do we ensure that method type inference terminates?
I missed the party. I was all set to be on that massive wave of announcements about TypeScript, and...
Date: 10/02/2012
Roslyn September 2012 CTP is now available
I am super excited to announce that we have just released a third "Community Technology Preview" of...
Date: 09/17/2012
Static analysis of "is"
Before I get into the subject of today's fabulous adventure, I want to congratulate the whole rest...
Date: 09/12/2012
An "is" operator puzzle, part two
As I said last time, that was a pretty easy puzzle: either FooBar, or the type of local variable x,...
Date: 08/27/2012
Fabulous Adventures In Casting
I've written a lot about casting over the years in this blog, but always in the context of the "cast...
Date: 08/27/2012
An "is" operator puzzle, part one
It is possible for a program with some local variable x: bool b = x is FooBar; to assign true to b...
Date: 08/23/2012
Wackiness ensues
No tech today, but this is too funny to not pass along, so consider this your fun for Friday. What...
Date: 08/17/2012
Should C# warn on null dereference?
As you probably know, the C# compiler does flow analysis on constants for the purposes of finding...
Date: 07/17/2012
When is a cast not a cast?
I'm asked a lot of questions about conversion logic in C#, which is not that surprising. Conversions...
Date: 07/10/2012
The Best Advice I Ever Got
Just a quick link today: The super nice people over at InformIT (*) are running a series of short...
Date: 06/27/2012
Foolish consistency is foolish
Once again today's posting is presented as a dialogue, as is my wont. Why is var sometimes required...
Date: 06/25/2012
Eric Rambles On About C#, Again
Rachel Roumeliotis, who amongst other things edits C# books for O'Reilly, recently did an interview...
Date: 06/21/2012
Implementation-defined behaviour
As I've mentioned several times on this blog before, C# has been carefully designed to eliminate...
Date: 06/18/2012
Persistence, Facades and Roslyn's Red-Green Trees
We decided early in the Roslyn design process that the primary data structure that developers would...
Date: 06/08/2012
Announcing Microsoft Roslyn June 2012 CTP
Good afternoon all, I am happy to announce that we are releasing a second Community Technology...
Date: 06/05/2012
GUID guide, part three
Let's recap: a GUID is a 128 bit integer that is used as a globally unique identifier. GUIDs are not...
Date: 05/07/2012
GUID guide, part two
So how is it that a GUID can be guaranteed to be unique without some sort of central authority that...
Date: 04/30/2012
null is not false, part three
Returning now to the subject at hand: we would like to allow user-defined "overloads" of the &...
Date: 04/19/2012
A brief digression
Before we continue our exploration of truthiness in C#, a brief digression. I mentioned last time...
Date: 04/17/2012
null is not false, part two
In Raymond Smullyan's delightful books about the Island of Knights and Knaves -- where, you'll...
Date: 04/12/2012
null is not false
The way you typically represent a "missing" or "invalid" value in C# is to use the "null" value of...
Date: 03/26/2012
Why not automatically infer constraints?
UPDATE: Whoops! I accidentally set a draft of this article to automatically publish on a day that I...
Date: 03/09/2012
Why are local variables definitely assigned in unreachable statements?
You're probably all familiar with the feature of C# which disallows reading from a local variable...
Date: 03/05/2012
The C# 5.0 beta release is now available
I am super excited to announce that the beta release of Visual Studio version 11 (which includes the...
Date: 02/29/2012
The Solution To The Simple Puzzle
The first time I ran my histogram visualizer I asked for a Cauchy distribution with a minimum of -10...
Date: 02/27/2012
A Simple Puzzle
My original version of the histogram-generating code that I whipped up for the previous episode of...
Date: 02/24/2012
Generating Random Non-Uniform Data In C#
When building simulations of real-world phenomena, or when generating test data for algorithms that...
Date: 02/21/2012
Bad Metaphors
The standard way to teach beginner OO programmers about classes is to make a metaphor to the real...
Date: 02/13/2012
What is "binding" and what makes it late?
"Late binding" is one of those computer-sciency terms that, like "strong typing", means different...
Date: 02/06/2012
Anonymous Types Unify Within An Assembly, Part Two
Last time I noted that any two usages of "the same" anonymous type within an assembly actually unify...
Date: 01/30/2012
Anonymous types unify within an assembly, Part One
Back in my last post of 2010 I said that I would do an example of anonymous types unifying within an...
Date: 01/23/2012
What is the defining characteristic of a local variable?
If you ask a dozen C# developers what a "local variable" is, you might get a dozen different...
Date: 01/16/2012
Every public change is a breaking change
Here's an inconvenient truth: just about every "public surface area" change you make to your code is...
Date: 01/09/2012
He's So Dreamy
Happy New Year all! It has just been brought to my attention that this blog and the Programmer Ryan...
Date: 01/02/2012
Shadowcasting in C#, Part Six
OK, let's finish up this year and this series. We have an algorithm that can compute what cells in...
Date: 12/29/2011
Shadowcasting in C#, Part Five
I hope you all had a pleasant Christmas and Boxing Day; we chose to not travel to see family this...
Date: 12/27/2011
Shadowcasting in C#, Part Four
Last time we saw how many different ways there were to get the calculation of the top cell based on...
Date: 12/22/2011