Older/ReSharper20171CSharp/Tuples.cs (45 lines of code) (raw):
using System;
namespace ReSharper20171CSharp
{
class Tuples
{
public void TupleExamples()
{
var name = GetName();
Console.WriteLine($"Hello to {name.forename} {name.surname}");
var x = (1, 2);
// Correct type inference, value analysis/dead code
var (value1, value2) = x;
Console.WriteLine(value1);
var p = new Person("Matt", "Ellis");
// Go to declaration on brackets
var (forename, surname) = p;
var (name1, name2) = p;
}
private static (string forename, string surname) GetName()
{
return ("Jason", "Isaacs");
}
private class Person
{
private readonly string myForename;
private readonly string mySurname;
public Person(string forename, string surname)
{
myForename = forename;
mySurname = surname;
}
// Find usages on Deconstruct
public void Deconstruct(out string forename, out string surname)
{
forename = myForename;
surname = mySurname;
}
}
abstract class Base
{
public abstract (string name, string surname) GetPerson();
}
class Derived : Base
{
// "surnmae" typo detection
public override (string name, string surnmae) GetPerson() => ("Jane", "Doe");
}
}
}