mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
87 lines
2.0 KiB
C#
87 lines
2.0 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
public record Person
|
|
{
|
|
public string LastName { get; }
|
|
public string FirstName { get; }
|
|
|
|
public Person(string first, string last) => (FirstName, LastName) = (first, last);
|
|
}
|
|
|
|
public record Teacher : Person
|
|
{
|
|
public string Subject { get; }
|
|
|
|
public Teacher(string first, string last, string sub)
|
|
: base(first, last) => Subject = sub;
|
|
}
|
|
|
|
public sealed record Student : Person
|
|
{
|
|
public int Level { get; }
|
|
|
|
public Student(string first, string last, int level) : base(first, last) => Level = level;
|
|
}
|
|
|
|
public record Person1(string FirstName, string LastName);
|
|
|
|
public record Teacher1(string FirstName, string LastName, string Subject)
|
|
: Person1(FirstName, LastName);
|
|
|
|
public sealed record Student1(string FirstName, string LastName, int Level)
|
|
: Person1(FirstName, LastName);
|
|
|
|
public record Pet(string Name)
|
|
{
|
|
public void ShredTheFurniture() =>
|
|
Console.WriteLine("Shredding furniture");
|
|
}
|
|
|
|
public record Dog(string Name) : Pet(Name)
|
|
{
|
|
public void WagTail() =>
|
|
Console.WriteLine("It's tail wagging time");
|
|
|
|
public override string ToString()
|
|
{
|
|
var s = new StringBuilder();
|
|
base.PrintMembers(s);
|
|
return $"{s.ToString()} is a dog";
|
|
}
|
|
}
|
|
|
|
public abstract record R1(string A) { }
|
|
|
|
public record R2(string A, string B) : R1(A) { }
|
|
|
|
public class Record1
|
|
{
|
|
public void M1()
|
|
{
|
|
var person = new Person("Bill", "Wagner");
|
|
var student = new Student("Bill", "Wagner", 11);
|
|
|
|
Console.WriteLine(student == person);
|
|
}
|
|
|
|
public void M2()
|
|
{
|
|
Person1 p1 = new Teacher1("Bill", "Wagner", "Math");
|
|
|
|
var (first, last) = p1;
|
|
Console.WriteLine(first);
|
|
|
|
var p2 = p1 with { FirstName = "Paul" };
|
|
var p3 = (Teacher1)p1 with { FirstName = "Paul", Subject = "Literature" };
|
|
var clone = p1 with { };
|
|
}
|
|
|
|
public void M3()
|
|
{
|
|
R2 a = new R2("A", "B");
|
|
R1 b = a;
|
|
R1 c = b with { A = "C" };
|
|
}
|
|
}
|