This commit is contained in:
ninemine
2025-07-01 20:34:09 +08:00
parent dbea849f6c
commit bf6b893412
4 changed files with 70 additions and 8 deletions

View File

@@ -6,9 +6,36 @@ using System.Threading.Tasks;
namespace Convention.Symbolization.Internal
{
public abstract class Variable : ICloneable
public abstract class Variable : ICloneable, IEquatable<Variable>
{
public readonly VariableSymbol SymbolInfo;
/// <summary>
/// for construct
/// </summary>
protected Variable(string symbolName, Type variableType)
{
SymbolInfo = new VariableSymbol(symbolName, variableType);
}
/// <summary>
/// for clone
/// </summary>
protected Variable(string symbolName, Variable variable) : this(symbolName, variable.SymbolInfo.VariableType) { }
public abstract object Clone();
public abstract bool Equals(Variable other);
public override bool Equals(object obj)
{
return obj is Variable variable && Equals(variable);
}
public abstract int GetVariableHashCode();
public override sealed int GetHashCode()
{
return GetVariableHashCode();
}
}
public readonly struct VariableSymbol