ILSpy should output the short record R(int a, int b);
syntax where possible.
Example records:
record R(int A)
{
public int B;
public int C { get; set; }
}
record Derived(int X) : R(X * 2);
EqualityContract
Generated unless user-declared.
// R:
protected virtual Type EqualityContract
{
[CompilerGenerated]
get
{
return typeof(R);
}
}
// Derived:
protected override Type EqualityContract
{
[CompilerGenerated]
get
{
return typeof(Derived);
}
}
Copy Constructor
Generated unless user-declared.
protected R(R original)
{
b = original.b;
C = original.C;
}
protected Derived(Derived original)
: base(original)
{
X = original.X;
}
Clone method
Always generated; cannot be named in user code.
public virtual R <Clone>$()
{
return new R(this);
}
public override R <Clone>$()
{
return new Derived(this);
}
Equals methods
Equals(object?)
overload: always generated; error if also user-declared.Equals(R?)
overload: generated unless user-declared.
// R
public override bool Equals(object? obj)
{
return Equals(obj as R);
}
public virtual bool Equals(R? other)
{
return (object)other != null && EqualityContract == other.EqualityContract && EqualityComparer<int>.Default.Equals(A, other.A) && EqualityComparer<int>.Default.Equals(B, other.B) && EqualityComparer<int>.Default.Equals(C, other.C);
}
// Derived
public override bool Equals(object? obj)
{
return Equals(obj as Derived);
}
public sealed override bool Equals(R? other)
{
return Equals((object?)other);
}
public virtual bool Equals(Derived? other)
{
return base.Equals(other) && EqualityComparer<int>.Default.Equals(X, other!.X);
}
GetHashCode
Generated unless user-declared.
// R:
public override int GetHashCode()
{
return ((EqualityComparer<Type>.Default.GetHashCode(EqualityContract) * -1521134295 + EqualityComparer<int>.Default.GetHashCode(A)) * -1521134295 + EqualityComparer<int>.Default.GetHashCode(B)) * -1521134295 + EqualityComparer<int>.Default.GetHashCode(C);
}
// Derived:
public override int GetHashCode()
{
return base.GetHashCode() * -1521134295 + EqualityComparer<int>.Default.GetHashCode(X);
}
operator==
Always generated; error if also user-declared.
public static bool operator ==(R? r1, R? r2)
{
return (object)r1 == r2 || (r1?.Equals(r2) ?? false);
}
public static bool operator !=(R? r1, R? r2)
{
return !(r1 == r2);
}
public static bool operator ==(Derived? r1, Derived? r2)
{
return (object)r1 == r2 || (r1?.Equals(r2) ?? false);
}
public static bool operator !=(Derived? r1, Derived? r2)
{
return !(r1 == r2);
}
ToString
Generated if not user-declared.
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("R");
stringBuilder.Append(" { ");
if (PrintMembers(stringBuilder))
{
stringBuilder.Append(" ");
}
stringBuilder.Append("}");
return stringBuilder.ToString();
}
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("Derived");
stringBuilder.Append(" { ");
if (PrintMembers(stringBuilder))
{
stringBuilder.Append(" ");
}
stringBuilder.Append("}");
return stringBuilder.ToString();
}
PrintMembers
Generated if not user-declared.
// R:
protected virtual bool PrintMembers(StringBuilder builder)
{
builder.Append("A");
builder.Append(" = ");
builder.Append(A.ToString());
builder.Append(", ");
builder.Append("B");
builder.Append(" = ");
builder.Append(B.ToString());
builder.Append(", ");
builder.Append("C");
builder.Append(" = ");
builder.Append(C.ToString());
return true;
}
// Derived:
protected override bool PrintMembers(StringBuilder builder)
{
if (base.PrintMembers(builder))
{
builder.Append(", ");
}
builder.Append("X");
builder.Append(" = ");
builder.Append(X.ToString());
return true;
}
Primary Constructor
Generated only for positional records. Error if also user-declared.
public R(int A)
{
this.A = A;
base..ctor();
}
public Derived(int X)
{
this.X = X;
base..ctor(X * 2);
}
Deconstruct
Generated only for positional records. Error if also user-declared.
public void Deconstruct(out int A)
{
A = this.A;
}
public new void Deconstruct(out int X)
{
X = this.X;
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4