Struct FixedString64Bytes
An unmanaged UTF-8 string whose content is stored directly in the 64-byte struct.
Namespace: Unity.Collections
Assembly: Unity.Collections.dll
Syntax
[Serializable]
public struct FixedString64Bytes : INativeList<byte>, IIndexable<byte>, IUTF8Bytes
Remarks
The binary layout of this string is guaranteed, for now and all time, to be a length (a little-endian two byte integer) followed by the bytes of the characters (with no padding). A zero byte always immediately follows the last character. Effectively, the number of bytes for storing characters is 3 less than 64 (two length bytes and one null byte).
This layout is identical to a FixedList64Bytes<T> of bytes, thus allowing reinterpretation between FixedString64Bytes and FixedList64Bytes.
By virtue of being an unmanaged, non-allocated struct with no pointers, this string is fully compatible with jobs and Burst compilation. Unlike managed string types, these strings can be put in any unmanaged ECS components, FixedList, or any other unmanaged structs.
Constructors
FixedString64Bytes(string)
Initializes and returns an instance of FixedString64Bytes with the characters copied from a string.
Declaration
public FixedString64Bytes(string source)
Parameters
Type | Name | Description |
---|---|---|
string | source | The source string to copy. |
FixedString64Bytes(in FixedString128Bytes)
Initializes and returns an instance of FixedString64Bytes that is a copy of another string.
Declaration
public FixedString64Bytes(in FixedString128Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString128Bytes | other | The string to copy. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
FixedString64Bytes(in FixedString32Bytes)
Initializes and returns an instance of FixedString64Bytes that is a copy of another string.
Declaration
public FixedString64Bytes(in FixedString32Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString32Bytes | other | The string to copy. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
FixedString64Bytes(in FixedString4096Bytes)
Initializes and returns an instance of FixedString64Bytes that is a copy of another string.
Declaration
public FixedString64Bytes(in FixedString4096Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString4096Bytes | other | The string to copy. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
FixedString64Bytes(in FixedString512Bytes)
Initializes and returns an instance of FixedString64Bytes that is a copy of another string.
Declaration
public FixedString64Bytes(in FixedString512Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString512Bytes | other | The string to copy. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
FixedString64Bytes(in FixedString64Bytes)
Initializes and returns an instance of FixedString64Bytes that is a copy of another string.
Declaration
public FixedString64Bytes(in FixedString64Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | other | The string to copy. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
FixedString64Bytes(Rune, int)
Initializes and returns an instance of FixedString64Bytes with a single character repeatedly appended some number of times.
Declaration
public FixedString64Bytes(Unicode.Rune rune, int count = 1)
Parameters
Type | Name | Description |
---|---|---|
Unicode.Rune | rune | The Unicode.Rune to repeat. |
int | count | The number of times to repeat the character. Default is 1. |
Properties
Capacity
The number of bytes this string has for storing UTF-8 characters.
Declaration
public int Capacity { get; set; }
Property Value
Type | Description |
---|---|
int | The number of bytes this string has for storing UTF-8 characters. |
Remarks
Does not include the null-terminator byte.
A setter is included for conformity with INativeList<T>, but Capacity is fixed at 61. Setting the value to anything other than 61 throws an exception.
In UTF-8 encoding, each Unicode code point (character) requires 1 to 4 bytes, so the number of characters that can be stored may be less than the capacity.
Exceptions
Type | Condition |
---|---|
ArgumentOutOfRangeException | Thrown if attempting to set the capacity to anything other than 61. |
IsEmpty
Returns true if this string is empty (has no characters).
Declaration
public bool IsEmpty { get; }
Property Value
Type | Description |
---|---|
bool | True if this string is empty (has no characters). |
this[int]
Returns the byte (not character) at an index.
Declaration
public byte this[int index] { get; set; }
Parameters
Type | Name | Description |
---|---|---|
int | index | A byte index. |
Property Value
Type | Description |
---|---|
byte | The byte at the index. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the index is out of bounds. |
Length
The current length in bytes of this string's content.
Declaration
public int Length { get; set; }
Property Value
Type | Description |
---|---|
int | The current length in bytes of this string's content. |
Remarks
The length value does not include the null-terminator byte.
Exceptions
Type | Condition |
---|---|
ArgumentOutOfRangeException | Thrown if the new length is out of bounds. |
UTF8MaxLengthInBytes
Returns the maximum number of UTF-8 bytes that can be stored in this string.
Declaration
public static int UTF8MaxLengthInBytes { get; }
Property Value
Type | Description |
---|---|
int | The maximum number of UTF-8 bytes that can be stored in this string. |
Methods
Add(in byte)
Appends a byte.
Declaration
public void Add(in byte value)
Parameters
Type | Name | Description |
---|---|---|
byte | value | A byte to append. |
Remarks
A zero byte will always follow the newly appended byte.
No validation is performed: it is your responsibility for the bytes of the string to form valid UTF-8 when you're done appending bytes.
AsFixedList()
Declaration
public ref FixedList64Bytes<byte> AsFixedList()
Returns
Type | Description |
---|---|
FixedList64Bytes<byte> |
Clear()
Sets the length to 0.
Declaration
public void Clear()
CompareTo(string)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(string other)
Parameters
Type | Name | Description |
---|---|---|
string | other | A |
Returns
Type | Description |
---|---|
int | An integer denoting the lexicographical sort order of this string relative to the other:
|
CompareTo(FixedString128Bytes)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(FixedString128Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString128Bytes | other | A string to compare with. |
Returns
Type | Description |
---|---|
int | A number denoting the lexicographical sort order of this string relative to the other:
|
CompareTo(FixedString32Bytes)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(FixedString32Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString32Bytes | other | A string to compare with. |
Returns
Type | Description |
---|---|
int | A number denoting the lexicographical sort order of this string relative to the other:
|
CompareTo(FixedString4096Bytes)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(FixedString4096Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString4096Bytes | other | A string to compare with. |
Returns
Type | Description |
---|---|
int | A number denoting the lexicographical sort order of this string relative to the other:
|
CompareTo(FixedString512Bytes)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(FixedString512Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString512Bytes | other | A string to compare with. |
Returns
Type | Description |
---|---|
int | A number denoting the lexicographical sort order of this string relative to the other:
|
CompareTo(FixedString64Bytes)
Returns the lexicographical sort order of this string relative to another.
Declaration
public int CompareTo(FixedString64Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | other | A string to compare with. |
Returns
Type | Description |
---|---|
int | A number denoting the lexicographical sort order of this string relative to the other:
|
ElementAt(int)
Returns the reference to a byte (not character) at an index.
Declaration
public ref byte ElementAt(int index)
Parameters
Type | Name | Description |
---|---|---|
int | index | A byte index. |
Returns
Type | Description |
---|---|
byte | A reference to the byte at the index. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the index is out of bounds. |
Equals(object)
Returns true if this string and an object are equal.
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
object | obj | An object to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if this string and the object are equal. |
Overrides
Remarks
Returns false if the object is neither a System.String or a FixedString.
Two strings are equal if they have equal length and all their characters match.
Equals(string)
Returns true if this string and another have the same length and all the same characters.
Declaration
public bool Equals(string other)
Parameters
Type | Name | Description |
---|---|---|
string | other | A string to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if this string and the other have the same length and all the same characters. |
Equals(FixedString128Bytes)
Returns true if this string and another string are equal.
Declaration
public bool Equals(FixedString128Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString128Bytes | other | A FixedString128Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
Equals(FixedString32Bytes)
Returns true if this string and another string are equal.
Declaration
public bool Equals(FixedString32Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString32Bytes | other | A FixedString32Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
Equals(FixedString4096Bytes)
Returns true if this string and another string are equal.
Declaration
public bool Equals(FixedString4096Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString4096Bytes | other | A FixedString4096Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
Equals(FixedString512Bytes)
Returns true if this string and another string are equal.
Declaration
public bool Equals(FixedString512Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString512Bytes | other | A FixedString512Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
Equals(FixedString64Bytes)
Returns true if this string and another string are equal.
Declaration
public bool Equals(FixedString64Bytes other)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | other | A FixedString64Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
GetEnumerator()
Returns an enumerator for iterating over the characters of this string.
Declaration
public FixedString64Bytes.Enumerator GetEnumerator()
Returns
Type | Description |
---|---|
FixedString64Bytes.Enumerator | An enumerator for iterating over the characters of the FixedString64Bytes. |
GetHashCode()
Returns a hash code of this string.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
int | The hash code of this string. |
Overrides
Remarks
Only the character bytes are included in the hash: any bytes beyond Length are not part of the hash.
GetUnsafePtr()
Returns a pointer to the character bytes.
Declaration
public byte* GetUnsafePtr()
Returns
Type | Description |
---|---|
byte* | A pointer to the character bytes. |
ToString()
Returns a new managed string that is a copy of this string.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
string | A new managed string that is a copy of this string. |
Overrides
TryResize(int, NativeArrayOptions)
Attempts to set the length in bytes. Does nothing if the new length is invalid.
Declaration
public bool TryResize(int newLength, NativeArrayOptions clearOptions = NativeArrayOptions.ClearMemory)
Parameters
Type | Name | Description |
---|---|---|
int | newLength | The desired length. |
NativeArrayOptions | clearOptions | Whether added or removed bytes should be cleared (zeroed). (Increasing the length adds bytes; decreasing the length removes bytes.) |
Returns
Type | Description |
---|---|
bool | True if the new length is valid. |
Operators
operator ==(in FixedString64Bytes, in FixedString128Bytes)
Returns true if a FixedString64Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString64Bytes a, in FixedString128Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for equality. |
FixedString128Bytes | b | A FixedString128Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator ==(in FixedString64Bytes, in FixedString32Bytes)
Returns true if a FixedString64Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString64Bytes a, in FixedString32Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for equality. |
FixedString32Bytes | b | A FixedString32Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator ==(in FixedString64Bytes, in FixedString4096Bytes)
Returns true if a FixedString64Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString64Bytes a, in FixedString4096Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for equality. |
FixedString4096Bytes | b | A FixedString4096Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator ==(in FixedString64Bytes, in FixedString512Bytes)
Returns true if a FixedString64Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString64Bytes a, in FixedString512Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for equality. |
FixedString512Bytes | b | A FixedString512Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator ==(in FixedString64Bytes, in FixedString64Bytes)
Returns true if a FixedString64Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString64Bytes a, in FixedString64Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for equality. |
FixedString64Bytes | b | A FixedString64Bytes to compare for equality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are equal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
implicit operator FixedString64Bytes(string)
Returns a new FixedString64Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString64Bytes(string b)
Parameters
Type | Name | Description |
---|---|---|
string | b | A string to copy. |
Returns
Type | Description |
---|---|
FixedString64Bytes | A new FixedString64Bytes that is a copy of another string. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString64Bytes. |
implicit operator FixedString128Bytes(in FixedString64Bytes)
Returns a new FixedString128Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString128Bytes(in FixedString64Bytes fs)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | fs | A FixedString64Bytes to copy. |
Returns
Type | Description |
---|---|
FixedString128Bytes | A new FixedString128Bytes that is a copy of the other string. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString128Bytes. |
implicit operator FixedString4096Bytes(in FixedString64Bytes)
Returns a new FixedString4096Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString4096Bytes(in FixedString64Bytes fs)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | fs | A FixedString64Bytes to copy. |
Returns
Type | Description |
---|---|
FixedString4096Bytes | A new FixedString4096Bytes that is a copy of the other string. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString4096Bytes. |
implicit operator FixedString512Bytes(in FixedString64Bytes)
Returns a new FixedString512Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString512Bytes(in FixedString64Bytes fs)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | fs | A FixedString64Bytes to copy. |
Returns
Type | Description |
---|---|
FixedString512Bytes | A new FixedString512Bytes that is a copy of the other string. |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString512Bytes. |
operator !=(in FixedString64Bytes, in FixedString128Bytes)
Returns true if a FixedString64Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString64Bytes a, in FixedString128Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for inequality. |
FixedString128Bytes | b | A FixedString128Bytes to compare for inequality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are unequal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator !=(in FixedString64Bytes, in FixedString32Bytes)
Returns true if a FixedString64Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString64Bytes a, in FixedString32Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for inequality. |
FixedString32Bytes | b | A FixedString32Bytes to compare for inequality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are unequal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator !=(in FixedString64Bytes, in FixedString4096Bytes)
Returns true if a FixedString64Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString64Bytes a, in FixedString4096Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for inequality. |
FixedString4096Bytes | b | A FixedString4096Bytes to compare for inequality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are unequal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator !=(in FixedString64Bytes, in FixedString512Bytes)
Returns true if a FixedString64Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString64Bytes a, in FixedString512Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for inequality. |
FixedString512Bytes | b | A FixedString512Bytes to compare for inequality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are unequal. |
Remarks
Two strings are equal if they have equal length and all their characters match.
operator !=(in FixedString64Bytes, in FixedString64Bytes)
Returns true if a FixedString64Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString64Bytes a, in FixedString64Bytes b)
Parameters
Type | Name | Description |
---|---|---|
FixedString64Bytes | a | A FixedString64Bytes to compare for inequality. |
FixedString64Bytes | b | A FixedString64Bytes to compare for inequality. |
Returns
Type | Description |
---|---|
bool | True if the two strings are unequal. |
Remarks
Two strings are equal if they have equal length and all their characters match.