Struct FixedString64 | Collections | 0.15.0-preview.21
docs.unity3d.com
    Show / Hide Table of Contents

    Struct FixedString64

    An unmanaged string in UTF-8 format that contains its own fixed-size buffer of the given size in bytes. The string is guaranteed to be null-terminated, at the byte at the current Length offset. No memory is ever allocated, and no attempt is made to share memory when strings are copied. Since this structure is not generic and needs no disposing, it can exist inside ECS components, can be put in a FixedArray, FixedList or FixedHashMap, and can be a data member of unmanaged structs that are allocated from the unmanaged heap. This string is entirely compatible with Burst compilation.

    The binary layout of this string is guaranteed, for now and all time, to be two bytes of little-endian length, followed by a contiguous array of bytes with that length, with no padding in between. This is intentionally identical to FixedList of byte, which is guaranteed to always have the same memory layout.

    Those who need more than 65,535 contiguous items should allocate from the heap, as storing that many things contiguously in a C# struct is likely to result in much wasted time, as the compiler copies the struct often.

    Namespace: Unity.Collections
    Syntax
    [Serializable]
    public struct FixedString64 : INativeList<byte>, IUTF8Bytes, IComparable<string>, IEquatable<string>, IComparable<FixedString32>, IEquatable<FixedString32>, IComparable<FixedString64>, IEquatable<FixedString64>, IComparable<FixedString128>, IEquatable<FixedString128>, IComparable<FixedString512>, IEquatable<FixedString512>, IComparable<FixedString4096>, IEquatable<FixedString4096>

    Constructors

    FixedString64(String)

    Construct a FixedString64 from a System.String object.

    Declaration
    public FixedString64(string source)
    Parameters
    Type Name Description
    String source

    The System.String object to construct this FixedString64 with

    FixedString64(FixedString128)

    Construct a FixedString64 by copying from another FixedString source.

    Declaration
    public FixedString64(in FixedString128 source)
    Parameters
    Type Name Description
    FixedString128 source

    FixedString64(FixedString32)

    Construct a FixedString64 by copying from another FixedString source.

    Declaration
    public FixedString64(in FixedString32 source)
    Parameters
    Type Name Description
    FixedString32 source

    FixedString64(FixedString4096)

    Construct a FixedString64 by copying from another FixedString source.

    Declaration
    public FixedString64(in FixedString4096 source)
    Parameters
    Type Name Description
    FixedString4096 source

    FixedString64(FixedString512)

    Construct a FixedString64 by copying from another FixedString source.

    Declaration
    public FixedString64(in FixedString512 source)
    Parameters
    Type Name Description
    FixedString512 source

    FixedString64(FixedString64)

    Construct a FixedString64 by copying from another FixedString source.

    Declaration
    public FixedString64(in FixedString64 source)
    Parameters
    Type Name Description
    FixedString64 source

    FixedString64(Unicode.Rune, Int32)

    Construct a FixedString64 by repeating the given Unicode.Rune a number of times.

    Declaration
    public FixedString64(Unicode.Rune rune, int count = 1)
    Parameters
    Type Name Description
    Unicode.Rune rune

    The Unicode.Rune to repeat

    Int32 count

    The number of times to repeat, default 1

    Properties

    Capacity

    The maximum available capacity of the UTF-8 encoded string, in bytes. Due to the UTF-8 encoding, each Unicode code point requires between 1 and 4 bytes to encode. The null terminating byte is not included in the capacity. The FixedString always has space for a null terminating byte. For FixedString64, attempting to set this value to anything lower than 61 will throw. The Capacity will always be 61.

    Declaration
    public int Capacity { get; set; }
    Property Value
    Type Description
    Int32
    Implements
    INativeList<T>.Capacity

    IsEmpty

    Reports whether container is empty.

    Declaration
    public bool IsEmpty { get; }
    Property Value
    Type Description
    Boolean

    True if this container empty.

    Implements
    INativeList<T>.IsEmpty
    IUTF8Bytes.IsEmpty

    Item[Int32]

    Return the byte at the given byte (not character) index. The index must be in the range of [0..Length)

    Declaration
    public byte this[int index] { get; set; }
    Parameters
    Type Name Description
    Int32 index
    Property Value
    Type Description
    Byte
    Implements
    INativeList<T>.Item[Int32]

    Length

    The current length of the UTF-8 encoded string, in bytes. The string is guaranteed to be null-terminated. The length value does not include the null terminating byte. It is valid to read the null byte at the Length position when accessing this data by raw pointer.

    Declaration
    public int Length { get; set; }
    Property Value
    Type Description
    Int32
    Implements
    INativeList<T>.Length

    UTF8MaxLengthInBytes

    Returns the maximum number of utf8 bytes that can be stored in this type.

    Declaration
    public static int UTF8MaxLengthInBytes { get; }
    Property Value
    Type Description
    Int32

    Value

    A property in order to display the value in Unity.Properties generated UI.

    Declaration
    public string Value { get; }
    Property Value
    Type Description
    String

    Methods

    Add(Byte)

    Append the given byte value to this string. The string will remain null-terminated after the new byte. Appending an invalid UTF-8 sequence will cause the contents of this string to be invalid when converted to UTF-16 or UCS-2. No validation of the appended bytes is done.

    Declaration
    public void Add(in byte value)
    Parameters
    Type Name Description
    Byte value

    The byte to append.

    AsFixedList()

    Transform this struct to a reference to a FixedListByteN, which has the same layout. The returned reference is a reference to this data, and is only valid while it is valid.

    Declaration
    public FixedListByte64 AsFixedList()
    Returns
    Type Description
    FixedListByte64

    Clear()

    Clear this string by setting its Length to 0.

    Declaration
    public void Clear()
    Implements
    INativeList<T>.Clear()

    CompareTo(String)

    Compare this FixedString64 with a System.String in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(string other)
    Parameters
    Type Name Description
    String other

    The System.String to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other System.String would appear first if sorted.

    CompareTo(FixedString128)

    Compare this FixedString64 with a FixedString128 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString128 other)
    Parameters
    Type Name Description
    FixedString128 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString128 would appear first if sorted.

    CompareTo(FixedString32)

    Compare this FixedString64 with a FixedString32 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString32 other)
    Parameters
    Type Name Description
    FixedString32 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString32 would appear first if sorted.

    CompareTo(FixedString4096)

    Compare this FixedString64 with a FixedString4096 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString4096 other)
    Parameters
    Type Name Description
    FixedString4096 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString4096 would appear first if sorted.

    CompareTo(FixedString512)

    Compare this FixedString64 with a FixedString512 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString512 other)
    Parameters
    Type Name Description
    FixedString512 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString512 would appear first if sorted.

    CompareTo(FixedString64)

    Compare this FixedString64 with a FixedString64 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString64 other)
    Parameters
    Type Name Description
    FixedString64 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString64 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString64 would appear first if sorted.

    ElementAt(Int32)

    Return a ref to the the byte at the given byte (not character) index. The index must be in the range of [0..Length). The ref byte is a direct reference into this FixedString, and is only valid while this FixedString is valid.

    Declaration
    public byte ElementAt(int index)
    Parameters
    Type Name Description
    Int32 index

    The byte index to access

    Returns
    Type Description
    Byte

    A ref byte for the requested index

    Implements
    INativeList<T>.ElementAt(Int32)

    Equals(Object)

    Determines whether a FixedString64 has the same value as some other object.

    Declaration
    public override bool Equals(object obj)
    Parameters
    Type Name Description
    Object obj

    The object to compare for equality

    Returns
    Type Description
    Boolean
    Overrides
    ValueType.Equals(Object)

    Equals(String)

    Compare this FixedString64 with a System.String, and return whether they contain the same string or not.

    Declaration
    public bool Equals(string other)
    Parameters
    Type Name Description
    String other

    The System.String to compare with

    Returns
    Type Description
    Boolean

    true if they are equal, or false if they are not.

    Equals(FixedString128)

    Declaration
    public bool Equals(FixedString128 other)
    Parameters
    Type Name Description
    FixedString128 other
    Returns
    Type Description
    Boolean

    Equals(FixedString32)

    Declaration
    public bool Equals(FixedString32 other)
    Parameters
    Type Name Description
    FixedString32 other
    Returns
    Type Description
    Boolean

    Equals(FixedString4096)

    Declaration
    public bool Equals(FixedString4096 other)
    Parameters
    Type Name Description
    FixedString4096 other
    Returns
    Type Description
    Boolean

    Equals(FixedString512)

    Declaration
    public bool Equals(FixedString512 other)
    Parameters
    Type Name Description
    FixedString512 other
    Returns
    Type Description
    Boolean

    Equals(FixedString64)

    Declaration
    public bool Equals(FixedString64 other)
    Parameters
    Type Name Description
    FixedString64 other
    Returns
    Type Description
    Boolean

    GetEnumerator()

    Returns an enumerator that iterates through a container.

    Declaration
    public FixedString64.Enumerator GetEnumerator()
    Returns
    Type Description
    FixedString64.Enumerator

    An IEnumerator object that can be used to iterate through the container.

    GetHashCode()

    Compute a hash code of this FixedString64: an integer that is likely to be different for two FixedString64, if their contents are different.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    A hash code of this FixedString64

    Overrides
    ValueType.GetHashCode()

    GetUnsafePtr()

    Declaration
    public byte *GetUnsafePtr()
    Returns
    Type Description
    Byte*
    Implements
    IUTF8Bytes.GetUnsafePtr()

    ToString()

    Convert this FixedString64 to a System.String.

    Declaration
    public override string ToString()
    Returns
    Type Description
    String

    A System.String with a copy of this FixedString64

    Overrides
    ValueType.ToString()

    TryResize(Int32, NativeArrayOptions)

    Attempt to set the length of the string, in UTF-8 bytes.

    Declaration
    public bool TryResize(int newLength, NativeArrayOptions clearOptions = NativeArrayOptions.ClearMemory)
    Parameters
    Type Name Description
    Int32 newLength

    The new length of the string

    NativeArrayOptions clearOptions

    Whether the new memory should be initialized or not

    Returns
    Type Description
    Boolean

    Whether the resize was successful.

    Implements
    IUTF8Bytes.TryResize(Int32, NativeArrayOptions)

    Operators

    Equality(FixedString64, FixedString128)

    Declaration
    public static bool operator ==(in FixedString64 a, in FixedString128 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString128 b
    Returns
    Type Description
    Boolean

    Equality(FixedString64, FixedString32)

    Declaration
    public static bool operator ==(in FixedString64 a, in FixedString32 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString32 b
    Returns
    Type Description
    Boolean

    Equality(FixedString64, FixedString4096)

    Declaration
    public static bool operator ==(in FixedString64 a, in FixedString4096 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString4096 b
    Returns
    Type Description
    Boolean

    Equality(FixedString64, FixedString512)

    Declaration
    public static bool operator ==(in FixedString64 a, in FixedString512 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString512 b
    Returns
    Type Description
    Boolean

    Equality(FixedString64, FixedString64)

    Declaration
    public static bool operator ==(in FixedString64 a, in FixedString64 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString64 b
    Returns
    Type Description
    Boolean

    Implicit(String to FixedString64)

    Enable implicit conversion of System.String to FixedString64.

    Declaration
    public static implicit operator FixedString64(string b)
    Parameters
    Type Name Description
    String b

    The System.String object to convert to a FixedString64

    Returns
    Type Description
    FixedString64

    Implicit(FixedString64 to FixedString128)

    Declaration
    public static implicit operator FixedString128(in FixedString64 fs)
    Parameters
    Type Name Description
    FixedString64 fs
    Returns
    Type Description
    FixedString128

    Implicit(FixedString64 to FixedString4096)

    Declaration
    public static implicit operator FixedString4096(in FixedString64 fs)
    Parameters
    Type Name Description
    FixedString64 fs
    Returns
    Type Description
    FixedString4096

    Implicit(FixedString64 to FixedString512)

    Declaration
    public static implicit operator FixedString512(in FixedString64 fs)
    Parameters
    Type Name Description
    FixedString64 fs
    Returns
    Type Description
    FixedString512

    Inequality(FixedString64, FixedString128)

    Declaration
    public static bool operator !=(in FixedString64 a, in FixedString128 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString128 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString64, FixedString32)

    Declaration
    public static bool operator !=(in FixedString64 a, in FixedString32 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString32 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString64, FixedString4096)

    Declaration
    public static bool operator !=(in FixedString64 a, in FixedString4096 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString4096 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString64, FixedString512)

    Declaration
    public static bool operator !=(in FixedString64 a, in FixedString512 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString512 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString64, FixedString64)

    Declaration
    public static bool operator !=(in FixedString64 a, in FixedString64 b)
    Parameters
    Type Name Description
    FixedString64 a
    FixedString64 b
    Returns
    Type Description
    Boolean

    Extension Methods

    FixedStringMethods.Append<T>(ref T, Unicode.Rune)
    FixedStringMethods.Append<T>(ref T, Char)
    FixedStringMethods.AppendRawByte<T>(ref T, Byte)
    FixedStringMethods.Append<T>(ref T, Unicode.Rune, Int32)
    FixedStringMethods.Append<T>(ref T, Int64)
    FixedStringMethods.Append<T>(ref T, Int32)
    FixedStringMethods.Append<T>(ref T, UInt64)
    FixedStringMethods.Append<T>(ref T, UInt32)
    FixedStringMethods.Append<T>(ref T, Single, Char)
    FixedStringMethods.Append<T, T2>(ref T, T2)
    FixedStringMethods.CopyFrom<T, T2>(ref T, T2)
    FixedStringMethods.Append<T>(ref T, Byte*, Int32)
    FixedStringMethods.Append<T>(ref T, String)
    FixedStringMethods.CopyFrom<T>(ref T, String)
    FixedStringMethods.AppendFormat<T, U, T0>(ref T, U, T0)
    FixedStringMethods.AppendFormat<T, U, T0, T1>(ref T, U, T0, T1)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2>(ref T, U, T0, T1, T2)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3>(ref T, U, T0, T1, T2, T3)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4>(ref T, U, T0, T1, T2, T3, T4)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5>(ref T, U, T0, T1, T2, T3, T4, T5)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6>(ref T, U, T0, T1, T2, T3, T4, T5, T6)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
    FixedStringMethods.IndexOf<T>(ref T, Byte*, Int32)
    FixedStringMethods.IndexOf<T>(ref T, Byte*, Int32, Int32, Int32)
    FixedStringMethods.IndexOf<T, T2>(ref T, T2)
    FixedStringMethods.IndexOf<T, T2>(ref T, T2, Int32, Int32)
    FixedStringMethods.Contains<T, T2>(ref T, T2)
    FixedStringMethods.LastIndexOf<T>(ref T, Byte*, Int32)
    FixedStringMethods.LastIndexOf<T>(ref T, Byte*, Int32, Int32, Int32)
    FixedStringMethods.LastIndexOf<T, T2>(ref T, T2)
    FixedStringMethods.LastIndexOf<T, T2>(ref T, T2, Int32, Int32)
    FixedStringMethods.CompareTo<T>(ref T, Byte*, Int32)
    FixedStringMethods.CompareTo<T, T2>(ref T, T2)
    FixedStringMethods.Equals<T>(ref T, Byte*, Int32)
    FixedStringMethods.Equals<T, T2>(ref T, T2)
    FixedStringMethods.Peek<T>(ref T, Int32)
    FixedStringMethods.Read<T>(ref T, ref Int32)
    FixedStringMethods.Write<T>(ref T, ref Int32, Unicode.Rune)
    FixedStringMethods.ConvertToString<T>(ref T)
    FixedStringMethods.ComputeHashCode<T>(ref T)
    FixedStringMethods.EffectiveSizeOf<T>(ref T)
    FixedStringMethods.Format<T>(ref T, Int64)
    FixedStringMethods.Format<T>(ref T, Int32)
    FixedStringMethods.Format<T>(ref T, Single, Char)
    FixedStringMethods.Parse<T>(ref T, ref Int32, ref Int32)
    FixedStringMethods.Parse<T>(ref T, ref Int32, ref Single, Char)
    In This Article
    • Constructors
      • FixedString64(String)
      • FixedString64(FixedString128)
      • FixedString64(FixedString32)
      • FixedString64(FixedString4096)
      • FixedString64(FixedString512)
      • FixedString64(FixedString64)
      • FixedString64(Unicode.Rune, Int32)
    • Properties
      • Capacity
      • IsEmpty
      • Item[Int32]
      • Length
      • UTF8MaxLengthInBytes
      • Value
    • Methods
      • Add(Byte)
      • AsFixedList()
      • Clear()
      • CompareTo(String)
      • CompareTo(FixedString128)
      • CompareTo(FixedString32)
      • CompareTo(FixedString4096)
      • CompareTo(FixedString512)
      • CompareTo(FixedString64)
      • ElementAt(Int32)
      • Equals(Object)
      • Equals(String)
      • Equals(FixedString128)
      • Equals(FixedString32)
      • Equals(FixedString4096)
      • Equals(FixedString512)
      • Equals(FixedString64)
      • GetEnumerator()
      • GetHashCode()
      • GetUnsafePtr()
      • ToString()
      • TryResize(Int32, NativeArrayOptions)
    • Operators
      • Equality(FixedString64, FixedString128)
      • Equality(FixedString64, FixedString32)
      • Equality(FixedString64, FixedString4096)
      • Equality(FixedString64, FixedString512)
      • Equality(FixedString64, FixedString64)
      • Implicit(String to FixedString64)
      • Implicit(FixedString64 to FixedString128)
      • Implicit(FixedString64 to FixedString4096)
      • Implicit(FixedString64 to FixedString512)
      • Inequality(FixedString64, FixedString128)
      • Inequality(FixedString64, FixedString32)
      • Inequality(FixedString64, FixedString4096)
      • Inequality(FixedString64, FixedString512)
      • Inequality(FixedString64, FixedString64)
    • Extension Methods
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023