/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/OneScript.Core/Values/BslStringValue.cs
69 строк
2 KB
EvilBeaver
Замечание про отсутствие Equals(object)
02 дек 2025, 11:28
02 дек 2025, 11:28
804a214
Код
Авторство
О чём код?
/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; using OneScript.Types; namespace OneScript.Values { public sealed class BslStringValue : BslPrimitiveValue, IBslComparable { private readonly string _value; public static BslStringValue Empty { get; } = new BslStringValue(String.Empty); public static BslStringValue Create(string value) { return value == string.Empty ? Empty : new BslStringValue(value); } private BslStringValue(string value) { _value = value ?? throw new ArgumentNullException(); } public override TypeDescriptor SystemType => BasicTypes.String; public override string ToString() => _value; public static explicit operator decimal(BslStringValue value) => BslNumericValue.Parse(value._value); public static implicit operator string(BslStringValue value) => value._value; public static explicit operator DateTime(BslStringValue value) => (DateTime)BslDateValue.Parse(value._value); public static explicit operator bool(BslStringValue value) => (bool)BslBooleanValue.Parse(value._value); public static string operator +(BslStringValue value, object other) => value._value + other; public override bool Equals(BslValue other) { return other is BslStringValue sv ? _value.Equals(sv._value) : base.Equals(other); } public override int GetHashCode() => _value.GetHashCode(); public override bool Equals(object obj) { if (obj is BslValue bsl) return Equals(bsl); return false; } public override int CompareTo(BslValue other) { if (ReferenceEquals(this, other)) return 0; if (other is BslStringValue s) return String.Compare(_value, s._value, StringComparison.InvariantCulture); return base.CompareTo(other); } } }