Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


(The Other) Top 10 Changes in C# Beta 2

C# Beta 2 incorporates a number of changes from Beta 1 as Microsoft polishes the language for its Release-To-Manufacturing date. Review the most significant of these syntactical, compiler, and behavioral changes.




Building the Right Environment to Support AI, Machine Learning and Deep Learning

s the first new commercial language Microsoft has introduced since Visual Basic 1.0 in 1991 (FoxPro was acquired in June 1992), C# is quickly garnering heavy attention from interested spectators and hardcore developers alike. Beta 2 (released on June 18) incorporates a number of changes as Microsoft polishes the language for a projected Release-To-Manufacturing date near the end of 2001.

In this second article of a two-part series, I introduce another ten important changes found in C# Beta 2. If you haven't read Part I of the Top 10 Changes in C# Beta 2 series yet, don't worry; you can read the articles in any order. Developers already familiar with Beta 1 should be aware of the changes detailed in both articles.

#1–Use of Backtick and $ for Identifying Verbatim Strings No Longer Supported
Although Beta 1 C# (§ and Beta 2 (§ documentation for string literals both correctly specify a verbatim string literal as consisting of a @ character followed by zero or more characters enclosed in double-quotes, Beta 1 supported the use of the backtick (`) in place of the @ character. Beta 1 also supported the use of the $ character for verbatim string literals as a substitute for the double-quote, when used in conjunction with the backtick. Beta 2 no longer supports the use of the backtick or the $ character when specifying a verbatim string literal.

Sample Code Snippet: string s1 = `$hello\tworld$; // Unsuppported in Beta 2 string s2 = `"hello\tworld"; // Unsuppported in Beta 2 string s3 = @"hello\tworld"; // Beta 1 and 2 support string s4 = @$hello\tworld$; // Neither beta 1 or 2

#2–Arrays with Unknown Ranks Are Not Supported by the Compiler
In Beta 1, use of the feature 'array of unknown rank' generated a compiler warning regarding deprecation, but it compiled and functioned. In Beta 2, this feature has been eliminated.

Sample Code Snippet: int[] arr1 = {1,2}; int[,] arr2 = {{1,1},{2,3}}; int[?] arrTemp; // Array of unknown rank not allowed arrTemp = arr1; MessageBox.Show(arrTemp.Rank.ToString()); arrTemp = arr2; // Implicit convert error if known rank used MessageBox.Show(arrTemp.Rank.ToString());

#3–Assemblies Now Assumed to Be CLS Non-Compliant
Prior to Beta 2, the C# compiler assumed that all assemblies not explicitly marked with the [CLSCompliant(false)] attribute were compliant with the Common Language Specification (CLS). The C# language specification indicates that a library without an explicit CLSCompliant attribute setting of True should be assumed non-compliant. This C# compiler behavior has been corrected in Beta 2. To mark an assembly as being CLS-compliant now requires an explicit use of the attribute.

#4–Syntax for Event Accessors Now Consists of Add and Remove Accessor Declarations
Previously, explicit event accessor declarations followed the same syntax as property declarations. A Get and Set accessor was used to obtain and set the delegate value with an object key. Beta 2 modified the behavior of event accessor declarations in C# to map more intuitively to the behavior of adding and removing delegates to the event sink list.

Sample Code Snippet 1 (old code): public event MouseEventHandler MouseUp { get {return (MouseEventHandler)GetEventHandler(mouseUpKey);} set {SetEventHandler(mouseUpKey, value);} } Sample Code Snippet 2 (new code): public event MouseEventHandler MouseUp { add {AddEventHandler(mouseUpEventKey,value); } remove {RemoveEventHandler(mouseUpEventKey,value); } }

Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date