Browse by Tags

All Tags » C# (RSS)

New tool to play with: SemanticMerge

A little while ago I was contacted about a new merge tool from the company behind PlasticSCM . (I haven't used Plastic myself, but I'd heard of it.) My initial reaction was that I wasn't interested in anything which required me to learn yet...
Posted by skeet | 3 comment(s)
Filed under: ,

C# in Depth 3rd edition available for early access, plus a discount code…

Readers who follow me on Twitter or Google+ know this already, but… The third edition of C# in Depth is now available for early access from its page on the Manning website . I’ve been given a special discount code which expires at midnight EST on February...
Posted by skeet | 9 comment(s)
Filed under: ,

Fun with Object and Collection Initializers

Gosh it feels like a long time since I’ve blogged – particularly since I’ve blogged anything really C#-language-related. At some point I want to blog about my two CodeMash 2013 sessions (making the C# compiler/team cry, and learning lessons about API...
Posted by skeet | 10 comment(s)
Filed under:

How can I enumerate thee? Let me count the ways...

This weekend, I was writing some demo code for the async chapter of C# in Depth - the idea was to decompile a simple asynchronous method and see what happened. I received quite a surprise during this, in a way which had nothing to do with asynchrony....
Posted by skeet | 19 comment(s)
Filed under:

The future of "C# in Depth"

I'm getting fairly frequent questions - mostly on Twitter - about whether there's going to be a third edition of C# in Depth. I figure it's worth answering it once in some detail rather than repeatedly in 140 characters ;) I'm currently...
Posted by skeet | 13 comment(s)
Filed under: , ,

The perils of conditional mutability

This morning I was wrestling with trying to make some Noda Time unit tests faster. For some reason, the continuous integration host we're using is really slow at loading resources under .NET 4. The unit tests which run in 10 seconds on my home laptop...
Posted by skeet | 6 comment(s)
Filed under: , ,

More fun with DateTime

(Note that this is deliberately not posted in the Noda Time blog . I reckon it's of wider interest from a design perspective, and I won't be posting any of the equivalent Noda Time code. I'll just say now that we don't have this sort of...
Posted by skeet | 19 comment(s)
Filed under: , ,

Type initializer circular dependencies

To some readers, the title of this post may induce nightmarish recollections of late-night debugging sessions. To others it may be simply the epitome of jargon. Just to break the jargon down a bit: Type initializer: the code executed to initialize the...
Posted by skeet | 25 comment(s)
Filed under: , ,

Eduasync 20: Changes between the VS11 Preview and the Visual Studio 11 Beta

A while I ago I blogged about what had changed under the hood of async between the CTP and the VS11 Preview. Well, now that the VS11 Beta is out, it's time to do it all again... Note that the code in this post is in the Eduasync codebase , under a...
Posted by skeet | 8 comment(s)
Filed under: , , ,

Subtleties in API design - member placement

Noda Time is nearing v1.0, which means I'm spending more time writing documentation than code. It also means reviewing the APIs we've got with a critical eye - whether that's removing extraneous members, adding useful ones, or moving things...
Posted by skeet | 38 comment(s)
Filed under: , ,

Currying vs partial function application

This is a slightly odd post, and before you read it you should probably put yourself into one of three buckets: Someone who doesn't care too much about functional programming, and finds higher order functions tricky: feel free to skip this post entirely...
Posted by skeet | 35 comment(s)
Filed under: ,

Eduasync part 19: ordering by completion, ahead of time...

Today's post involves the MagicOrdering project in source control (project 28). When I wrote part 16 of Eduasync , showing composition in the form of majority voting, one reader mailed me a really interesting suggestion. We don't really need to...
Posted by skeet | 18 comment(s)
Filed under: , , ,

Eduasync part 18: Changes between the Async CTP and the Visual Studio 11 Preview

In preparation for CodeMash, I've been writing some more async code and decompiling it with Reflector. This time I'm using the Visual Studio 11 Developer Preview - the version which installs alongside Visual Studio 2010 under Windows 7. (Don't...
Posted by skeet | 6 comment(s)
Filed under: , , ,

Awaiting CodeMash 2012

Happy New Year, everyone! I'm attempting to make 2012 a quiet year in terms of my speaking engagements - I've turned down a few kind offers already, and I expect to do so again during the year. I may well still give user group talks in evenings...
Posted by skeet | 2 comment(s)
Filed under: ,

Book Review: Fluent C# (Rebecca Riordan, Sams)

(As usual, I will be sending the publisher a copy of this review to give them and the author a chance to reply to it before I publish it to the blog. Other than including their comments and correcting any factual mistakes they may point out, I don't...
Posted by skeet | 30 comment(s)
Filed under: ,

Eduasync part 17: unit testing

In the last post I showed a method to implement "majority voting" for tasks, allowing a result to become available as soon as possible. At the end, I mentioned that I was reasonably confident that it worked because of the unit tests... but I...
Posted by skeet | 6 comment(s)
Filed under: , , ,

Eduasync part 16: Example of composition: majority voting

Note: For the rest of this series, I'll be veering away from the original purpose of the project (investigating what the compiler is up to) in favour of discussing the feature itself. As such, I've added a requirement for AsyncCtpLib.dll - but...
Posted by skeet | 4 comment(s)
Filed under: , ,

Upcoming speaking engagements

It's just occurred to me that I've forgotten to mention a few of the things I'll be up to in the near-ish future. (I've talked about next week's Progressive .NET session before .) This is just a quick rundown - follow the links for...

Optimization and generics, part 2: lambda expressions and reference types

As with almost any performance work, your mileage may vary (in particular the 64-bit JIT may work differently) and you almost certainly shouldn't care. Relatively few people write production code which is worth micro-optimizing. Please don't take...
Posted by skeet | 17 comment(s)
Filed under: , ,

Optimization and generics, part 1: the new() constraint (updated: now with CLR v2 results)

As with almost any performance work, your mileage may vary (in particular the 64-bit JIT may work differently) and you almost certainly shouldn't care. Relatively few people write production code which is worth micro-optimizing. Please don't take...
Posted by skeet | 14 comment(s)
Filed under: , ,
More Posts Next page »