/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/OneScript.Core/Values/BslStringValue.cs
59 строк
2 KB
EvilBeaver
closes #1234 сортировка списка значений
28 дек 2022, 20:12
28 дек 2022, 20:12
9dc88fa
Код
Авторство
О чём код?
/*---------------------------------------------------------- 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 { 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 CompareTo(BslValue other) { if (ReferenceEquals(null, other)) return -1; if (other is BslStringValue s) return String.Compare(_value, s._value, StringComparison.CurrentCulture); return base.CompareTo(other); } } }