diff options
Diffstat (limited to 'csharp.html.markdown')
| -rw-r--r-- | csharp.html.markdown | 52 | 
1 files changed, 48 insertions, 4 deletions
| diff --git a/csharp.html.markdown b/csharp.html.markdown index 4c9e8411..a3d93a0b 100644 --- a/csharp.html.markdown +++ b/csharp.html.markdown @@ -459,7 +459,7 @@ on a new line! ""Wow!"", the masses cried";                  if (i > limit/2) yield break;                  yield return i;              } -        }              +        }          public static void OtherInterestingFeatures()          { @@ -948,7 +948,7 @@ on a new line! ""Wow!"", the masses cried";              A.A2();          }      } -     +      // String interpolation by prefixing the string with $      // and wrapping the expression you want to interpolate with { braces }      public class Rectangle @@ -956,7 +956,7 @@ on a new line! ""Wow!"", the masses cried";          public int Length { get; set; }          public int Width { get; set; }      } -     +      class Program      {          static void Main(string[] args) @@ -965,7 +965,49 @@ on a new line! ""Wow!"", the masses cried";              Console.WriteLine($"The length is {rect.Length} and the width is {rect.Width}");          }      } -     + +    // New C# 6 features +    class GlassBall : IJumpable, IBreakable +    { +        // Autoproperty initializers +        public int Damage { get; private set; } = 0; + +        // Autoproperty initializers on getter-only properties +        public string Name { get; } = "Glass ball"; + +        // Getter-only autoproperty that is initialized in constructor +        public string GenieName { get; } + +        public GlassBall(string genieName = null) +        { +            GenieName = genieName; +        } + +        public void Jump(int meters) +        { +            if (meters < 0) +                // New nameof() expression; compiler will check that the identifier exists +                // nameof(x) == "x" +                // Prevents e.g. parameter names changing but not updated in error messages +                throw new ArgumentException("Cannot jump negative amount!", nameof(meters)); + +            Damage += meters; +        } + +        // Expression-bodied properties ... +        public bool Broken +            => Damage > 100; + +        // ... and methods +        public override string ToString() +            // Interpolated string +            => $"{Name}. Damage taken: {Damage}"; + +        public string SummonGenie() +            // Null-conditional operators +            // x?.y will return null immediately if x is null; y is not evaluated +            => GenieName?.ToUpper(); +    }  } // End Namespace  ``` @@ -973,6 +1015,8 @@ on a new line! ""Wow!"", the masses cried";   * Attributes   * async/await, pragma directives + * Exception filters + * `using static`   * Web Development   	* ASP.NET MVC & WebApi (new)   	* ASP.NET Web Forms (old) | 
