Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eric Lippert's Erstwhile Blog
Immutability in C# Part Four: An Immutable Queue
An immutable queue is a bit trickier than an immutable stack, but we’re tough, we can handle...
Author: Eric Lippert Date: 12/10/2007
Immutability in C# Part Two: A Simple Immutable Stack
Let’s start with something simple: an immutable stack. Now, immediately I hear the objection:...
Author: Eric Lippert Date: 12/04/2007
Immutability in C# Part One: Kinds of Immutability
I said in an earlier post that I believe that immutable objects are the way of the future in C#. I...
Author: Eric Lippert Date: 11/13/2007
Covariance and Contravariance in C#, Part Ten: Dealing With Ambiguity
OK, I wasn’t quite done. One more variance post! Smart people: suppose we made...
Author: Eric Lippert Date: 11/09/2007
A Couple Links
Just two unrelated links today. First, Raymond's post today reminded me of one of my favourite lines...
Author: Eric Lippert Date: 11/07/2007
C# 3.0 Return Type Inference Does Not Work On Method Groups
UPDATE: A lot of people have linked to this article which is somewhat out of date now. This article...
Author: Eric Lippert Date: 11/05/2007
Covariance and Contravariance in C#, Part Nine: Breaking Changes
Today in the last entry in my ongoing saga of covariance and contravariance I’ll discuss what...
Author: Eric Lippert Date: 11/02/2007
Covariance and Contravariance in C#, Part Eight: Syntax Options
As I discussed last time, were we to introduce interface and delegate variance in a hypothetical...
Author: Eric Lippert Date: 10/31/2007
Covariance and Contravariance in C#, Part Six: Interface Variance
Over the last few posts I’ve discussed how it is possible to treat a delegate as contravariant...
Author: Eric Lippert Date: 10/26/2007
Covariance and Contravariance In C#, Part Five: Higher Order Functions Hurt My Brain
Last time I discussed how we could in a hypothetical future version of C# allow delegate types to be...
Author: Eric Lippert Date: 10/24/2007
Covariance and Contravariance in C#, Part Four: Real Delegate Variance
In the last two posts I discussed the two kinds of variance that C# already has -- array covariance...
Author: Eric Lippert Date: 10/22/2007
Covariance and Contravariance in C#, Part Three: Method Group Conversion Variance
Last time I discussed how array covariance is broken in C# (and Java, and a number of other...
Author: Eric Lippert Date: 10/19/2007
Covariance and Contravariance in C#, Part Two: Array Covariance
C# implements variance in two ways. Today, the broken way. Ever since C# 1.0, arrays where the...
Author: Eric Lippert Date: 10/17/2007
Covariance and Contravariance in C#, Part One
I have been wanting for a long time to do a series of articles about covariance and contravariance...
Author: Eric Lippert Date: 10/16/2007
Path Finding Using A* in C# 3.0, Part Four
Finally we are ready to translate our pseudocode into C# 3.0. What do we need to make the algorithm...
Author: Eric Lippert Date: 10/10/2007
Path Finding Using A* in C# 3.0, Part Two
In order to implement the A* algorithm in C# 3.0 I am going to need to implement some custom data...
Author: Eric Lippert Date: 10/04/2007
Psychic Debugging, Part Two
A number of readers have the mysterious fifth sense which gives them the ability to deduce that the...
Author: Eric Lippert Date: 09/06/2007
Psychic Debugging, Part One
Here is a compiler bug report I got the other day. The user is trying to write a unit test for a...
Author: Eric Lippert Date: 09/05/2007
Future Breaking Changes, Part Three
As I said earlier, we hate causing breaking changes in our product, the C# compiler, because they...
Author: Eric Lippert Date: 09/04/2007
Future Breaking Changes, Part Two
Last time I mentioned that one of the subtleties of programming language design is weighing the...
Author: Eric Lippert Date: 08/31/2007
Future Breaking Changes, Part One
We on the C# team hate making breaking changes. As my colleague Neal called out in his article on...
Author: Eric Lippert Date: 08/30/2007
Talking About The Weather, Part One
No technology today; just talking about the weather. I love talking about the weather. I mentioned...
Author: Eric Lippert Date: 08/02/2007
An Inheritance Puzzle, Part Two
Today, the answer to Friday's puzzle. It prints "Int32". But why? Some readers hypothesized that M...
Author: Eric Lippert Date: 07/30/2007
An Inheritance Puzzle, Part One
Once more I have returned from my ancestral homeland, after some weeks of sun, rain, storms, wind,...
Author: Eric Lippert Date: 07/27/2007
What exactly does 'lifted' mean?
(Note: all type placeholders S, T, U that I mention in this article are non-nullable value types.) I...
Author: Eric Lippert Date: 06/27/2007
Inside or Outside?
Here's a question I was asked recently which I got wrong. This is why I always encourage...
Author: Eric Lippert Date: 06/25/2007
Calling static methods on type parameters is illegal, part three
There were lots of good comments on my previous entries in this series. I want to address some of...
Author: Eric Lippert Date: 06/21/2007
Calling static methods on type parameters is illegal, part one
A developer passed along a question from a customer to our internal mailing list for C# questions...
Author: Eric Lippert Date: 06/14/2007
Bad Names
Over the past year and a half of working on the C# compiler we’ve refactored a lot of crufty...
Author: Eric Lippert Date: 06/12/2007
FYI: C# and VB Closures are per-scope
This post assumes that you understand how closures are implemented in C#. They're implemented in...
Author: Eric Lippert Date: 06/06/2007
Should we produce warnings for unused/uninitialized internal fields?
You may have noticed as you've been developing C# applications that if you have an internal field of...
Author: Eric Lippert Date: 05/15/2007
Why are overloaded operators always static in C#?
A language design question was posted to the Microsoft internal C# discussion group this morning:...
Author: Eric Lippert Date: 05/14/2007
Even More Conversion Trivia, Part Two
Reader Barry Kelly came up with the solution I was thinking of for my trivia question yesterday. If...
Author: Eric Lippert Date: 05/01/2007
Even More Conversion Trivia
I learn something new about C# every day. This is a subtle and tricky language. Pop quiz: foo is of...
Author: Eric Lippert Date: 04/30/2007
Write-only variables considered harmful? Or beneficial?
I haven't forgotten that I promised to describe one more place where we insert an explicit...
Author: Eric Lippert Date: 04/23/2007
Chained user-defined explicit conversions in C#, Part Three
Jeroen Frijters knew the answer to my challenge of last time: how is it that Foo foo = new Foo();...
Author: Eric Lippert Date: 04/20/2007
Chained user-defined explicit conversions in C#, Part Two
Reader Larry Lard asks a follow-up question regarding the subject of Monday’s blog entry. Why...
Author: Eric Lippert Date: 04/18/2007
Chained user-defined explicit conversions in C#
Reader Niall asked me why the following code compiles but produces an exception at runtime: class...
Author: Eric Lippert Date: 04/16/2007
News flash: Instances of anonymous types will be immutable
I've been meaning to write a blog post about a recent design change that we've made here on the C#...
Author: Eric Lippert Date: 04/13/2007
Practice thinking like a compiler tester, part three
Yesterday I posed a slightly harder version of the puzzle I posted the day before. Reader Steve...
Author: Eric Lippert Date: 04/12/2007