Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News MS MVP Richard Hale Shaw on C#

MS MVP Richard Hale Shaw on C#


Richard Hale Shaw has been mentoring developers for over 15 years and has the distinction of being a Microsoft MVP on C#.  In this interview Richard discusses advancements in C# from 2.0 to 3.0.  He specializes in consulting and training on .NET programming in C# and Managed C++. Richard is a member of the INETA speaker's bureau. He's been recognized by Microsoft as a C# MVP since 2004. 

Richard provides insight into usage of Generics,  Custom Iterators, and Anonymous Methods.   On an exciting capability in C# 3.0 referred to as extentsion methods, Richard had this to say:  

The value of an extension method in C Sharp 3.0 is that I can take that library method and define it as an extension method so that I can use it as if it were a part of that collection class. In fact I can define so that what it takes anybody that implements it as I (of T) and consequently be able to pass in any number of different collection types.

Join David Totzke as he interviews Richard Hale Shaw.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • C# 2.0 anonymous delegate/closures less than satisfying

    by Roger Voss,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    One feature I was rather excited about at first, but quickly dampened once I started using it, is the anonymous delegate/closure. Because C# is strongly typed, even with type inference, there ends up being way too much setup/boilerplate involved in using this. In the end there is none of the satisfaction as there is in the various scripting languages that have closures.

    Given the fiasco of closures in C# 2.0, am going to lobby the Java community to not bother going down the same problematic path. Just stick with Java's anonymous inner classes and leave it at that. Java folks have a great alternative - the Groovy JVM language. The use of closures in Groovy turns out exactly as one would hope. It's the dominant cool feature of Groovy.

    We should not make the same mistake as the C# community where C# has been turned into a public works project for language designers - with result that C# is becoming the PL/1 of this decade. We should basically lock Java down and go forward with Groovy as the next generation JVM-based language. Groovy is just the right amount of embellishment to where any of the goodness of Ruby can be enjoyed whereas the close association/compatibility to Java, the Java class libraries, the JVM, and Java developer infrastructure makes Groovy an immediate serious enterprise development language.

  • C# extension methods vs. AspectJ

    by Roger Voss,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Microsoft C# compiler developer, Peter Hallam, and I one time met over lunch and discussed the merits of aspect-oriented programming. I had been using AspectJ in enterprise development for my company and so had some real-world experience to relate.

    I basically told him that AspectJ, in my view, was the ultimate patching language for Java-based code. With AspectJ one can take an off the shelf, third party Java library, or an application server like JBoss, or any Java code in the Java runtime class library, and apply any manner of fix or embellishment to that existing code. This can be done without having to download all the source code and figure out how to get successful builds of the whole monstrosity (which can be a huge time waster). With AspectJ one just downloads the specific source code files that need to be patched (to use a reference guide), apply the aspects introducing the fix or new embellishments. Every dependent application at runtime will then get to enjoy the adjusted implementation.

    Peter made mention of extension methods - but I don't see these as being powerful enough. You really need the full power of an AspectJ-like solution if you start going down this path of patching existing code from the outside.

    However, it is good that AspectJ is a separate language from Java. Only certain expert developers need to do patching. Most developers don't need these kind of capabilities cluttering up the language they use every day.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p