Freigeben über


Fabulous Adventures In Coding

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

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

<Previous Next>