C# is a modern and innovative programming language, one which carefully incorporates features found in the most common industry and research languages. In keeping with the design philosophy of C#, Microsoft has introduced several potential new features to the C# language that increase developer productivity with language constructs.
Microsoft plans to build on an already elegant and expressive syntax by incorporating a variety of features across a broad spectrum of research and industry languages. Included among these language features are generics, iterations, anonymous methods, and partial types. It is on the pillars of a unified type system, component-based development, developer headroom, and pragmatic language constructs that future innovation in C# will be based.
The future developments will provide native support for SQL and XML right in the C# language, providing a far more natural integration of database programming concepts with modern languages. C Omega introduces some radical changes to the C# language. Most notably are the changes to the type system to provide more alignment between XML schema and classes. Anyone who understands what XSD is really trying to achieve will understand that trying to tie together schema and classes is impossible because the two are dramatically different, and are in fact trying to achieve different goals. Classes are just lists of fields, properties and methods. XSD on the other hand, describes documents of data: hierarchical streams of elements, sub-elements, attributes where you can define in quite some detail what constitutes a valid representation of that document. In essence, classes and documents are completely different beasts.
C Omega introduces several radically new concepts that allow interacting with complex data structures as if they were first class citizens of the languages. Based on what we know about the language, here are some of these features: streams, apply-to-all-expressions, choice types, nullable types, anonymous structures, query operators (SQL and XPath in C#), transactions, and XML literals integration.
This represents some great progress on the front of integrating solutions to real enterprise problems right into the language semantic of C#. It holds the potential to revolutionize database programming. Taking this one step further, just imagine if you could work with the new System. Data.SqlServer namespace, right in the SQL Server process, working directly with the data just like you would in stored procedures, and returning this using remoting.
Combining the power of C Omega, .Net and SQL Server's database engine, this could be the answer I was looking for and a huge leap forward for enterprise development. Could it mean the end of stored procedures? Either way, let’s hope these features make it into C# soon.
Microsoft recognized some of the features that made VB popular, and included them in VB.NET. C# though, was never designed as a "VB killer." Instead, C# is more likely to attract developers from C++ and Java. C# provides a C-like syntax similar to both C++ and to Java. Right off the bat, it's missing the first of the six features—a BASIC-like syntax. While syntax is unimportant to some developers, it's all-important to others.
In addition, VB, and now VB.NET, aren't case-sensitive languages. For example, "Email" and "EMail" are the same variable. In C, C++, Java, JScript, and other C-like languages, changing capitalization is an error; EMail and Email are not the same variables.
C# does have visual design and simple, integrated database support, and will eventually have a large palette of aftermarket controls to choose from—but it's the same palette that VB.NET developers will have.
C#'s IDE support leaves a lot to be desired. Even though C# shares an IDE with VB.NET, the IDE responds to each language differently. For example, Intellisense in VB.NET is considerably better than in C#, where it's—you guessed it—case sensitive. Why anyone would implement case sensitivity in a search feature intended to help people find information they may not know and shouldn't have to memorize is beyond me. Worse, it's inconsistently case-sensitive.
There's no denying that C# syntax is more concise. If you hate typing and don't use Intellisense's code completion capabilities, or you're already working with a C-syntax language, C# is the language for you. But that doesn't mean that C# will eventually replace VB.NET.