What's New in C# 6

@onuralptaner

Agenda

  • C# Evolution
  • Roslyn
  • C# 6.0 Features

Evolution of C#

C# 1.0

Managed

C# 4.0

Dynamic

C# 5.0

Asynchronous

C# 6.0

Roslyn

C# 2.0

Generics

C# 3.0

LINQ

C# 6.0 Features

Auto-Properties with Initializers

public class Person
{
    public string _name = "Onuralp Taner";
    public string Name { get { return _name; } }
}

Before C# 6.0

Auto-Properties with Initializers

C# 6

public class Person
{     
    public string Name { get; } = "Onuralp Taner";
}

Primary Constructors

Before C# 6.0

public class PayController : BasePaymentController
{
    readonly ILocalizationService _localizationService;
    readonly IPermissionService _permissionService;
    readonly ISettingService _settingService;
    readonly IStoreService _storeService;

    public PayController(IStoreService storeService,
        ISettingService settingService,
        ILocalizationService localizationService,
        IPermissionService permissionService)
    {
        _workContext = workContext;
        _storeService = storeService;
        _settingService = settingService;
        _localizationService = localizationService;
        _permissionService = permissionService;
    }
    //..

Primary Constructors

Class and Struct Parameters

public class PayController(IWorkContext workContext,
        IStoreService storeService,
        ISettingService settingService,
        ILocalizationService localizationService,
        IPermissionService permissionService)
{
    readonly ILocalizationService _localizationService = localizationService;
    readonly IPermissionService _permissionService = permissionService;
    readonly ISettingService _settingService = settingService;
    readonly IStoreService _storeService = storeService;
    readonly IWorkContext _workContext = workContext;

Primary Constructors

sub title

//..

C# 3.0

Dictionary<string, string> builtInDataTypes = 
    new Dictionary<string, string>()
  {
    {"Byte", "0 to 255"},
    {"Boolean", "True or false."},
    {"Object", "An Object."}
  };

C# 3.0

C# 6.0

Dictionary<string, string> builtInDataTypes = 
    new Dictionary<string, string>()
  {
    {"Byte", "0 to 255"},
    {"Boolean", "True or false."},
    {"Object", "An Object."}
  };
Dictionary<string, string> builtInDataTypes =
    new Dictionary<string, string> 
  {
    ["Byte"] = "0 to 255",
    ["Object"] = "An Object.",
    ["String"] = "A string"
  };

Auto-properties

-

  • What is the purpose of this talk?
  • What do my listeners care about?
  • What do I want people to remember?
Made with Slides.com