InfoQ Homepage C# Content on InfoQ

  • A Proposal for IDisposable and Static Analysis: DisposeUnused Attribute

    When .NET was first created, there was uncertainty about how IDisposable should be used. As a result, IDisposable was applied in an overly aggressive fashion with many categories of classes requiring empty Dispose methods. This has led to problems with static analysis tools that cannot separate real cases of missing Dispose calls from false positives.

  • Microsoft Releases C# 8.0

    Last week Microsoft announced the official availability of C# 8.0 as part of the .NET Core 3.0 release, simultaneously at .NET Conf 2019 and on their development blog. The new language features include nullable reference types, asynchronous streams, default interface members, and new code patterns. All new features are supported in Visual Studio 2019.

  • Preview of C# 8.x

    Even though C# 8.0 is still months away, planning has begun for C# 8.x. Some of these features are new, while others were previously considered for C# 8.

  • C# 8 Nullable Reference Types Update

    Work continues on nullable refence types for C# 8, revealing edge cases that need to be addressed before the final release and new opportunities for reducing the amount of boilerplate developers have to write.

  • C# 8 Pattern Matching Enhancements

    C# 7 laid the groundwork for pattern matching, but a lot of features had to be left on the cutting room floor. With the extra time C# 8 needs, many of these are being picked up.

  • C# 8 Nullable Value Type Enhancements

    First introduced in .NET 2, very little has changed for Nullable<T> over the last decade and a half, but that looks like it is about to change. Much of the work going into supporting nullable reference types in C# 8 may be applied to nullable value types.

  • C# Default Interface Methods Update

    As support for Default Interface Methods gets closer to completion, potential issues are raised. While much has been accomplished, this is a complex feature and many of the specifics haven’t been settled yet.

  • C# 8 More Small Features

    Though C# 8 is supposed to be released this year and the roadmap for C# 8.x and 9 are beginning to be formed, Microsoft is continuing to approve features for the next release.

  • Microsoft Releases High-Performance C# and F# Support for Apache Spark

    Microsoft announced the release of .NET for Apache Spark, adding new high-performance C# and F# binding to the big-data computation engine.

  • C# Futures: Deferred Error Handling

    When writing robust software, there is often a need to perform a series of retriable operations. In order to make the system robust, each operation in the series can be coded so it is independent of the status of the previous operation. Before the deferred error handling proposal, this could be tedious to code.

  • C# Futures: Pointer Math

    Interoperability with native platforms often require very specific coding patterns that involve the manipulation of pointers. While this can be done via a shim written in C, the proposal titled Operators should be exposed for System.IntPtr and System.UIntPtr seeks to offer that ability directly in C#.

  • C# Futures: Static Delegates and Function Pointers

    With each release of C#, it gains more low-level capabilities. While not useful to most business application developers, these features allow for high performance code suitable for graphics processing, machine learning, and mathematical packages. In these next two proposals, we see new ways to reference and invoke functions.

  • C# Futures: Lambda Attributes

    Attributes are a key part of .NET’s metadata processing capabilities. They are used by compilers, static analyzers, and runtime libraries for a variety of purposes. While normal functions/methods can have attributes, prior to this proposal lambdas and anonymous functions could not.

  • C# Futures: Defer

    Best known for its use in Go and Swift, C# proposal #1398 seeks to add defer statements. If you are not familiar with the concept, it can be summarized as a finally block appearing at the beginning of some code instead of the end.

  • Xamarin.Essentials Streamlines Cross-Platform Access to Native iOS, Android, and UWP Features

    Xamarin.Essentials abstracts native mobile features into a set of cross-platform APIs with the aim of simplifying their use. After a few months in preview, it has been now officially released with a number of enhancements contributed by the community.


Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.