Struct FixedString512Bytes
An unmanaged UTF-8 string whose content is stored directly in the 512-byte struct.
Namespace: Unity.Collections
Assembly: Unity.Collections.dll
Syntax
[Serializable]
public struct FixedString512Bytes : 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 512 (two length bytes and one null byte).
This layout is identical to a FixedList512Bytes<T> of bytes, thus allowing reinterpretation between FixedString512Bytes and FixedList512Bytes.
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
FixedString512Bytes(string)
Initializes and returns an instance of FixedString512Bytes with the characters copied from a string.
Declaration
public FixedString512Bytes(string source)
Parameters
| Type | Name | Description |
|---|---|---|
| string | source | The source string to copy. |
FixedString512Bytes(in FixedString128Bytes)
Initializes and returns an instance of FixedString512Bytes that is a copy of another string.
Declaration
public FixedString512Bytes(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 FixedString512Bytes. |
FixedString512Bytes(in FixedString32Bytes)
Initializes and returns an instance of FixedString512Bytes that is a copy of another string.
Declaration
public FixedString512Bytes(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 FixedString512Bytes. |
FixedString512Bytes(in FixedString4096Bytes)
Initializes and returns an instance of FixedString512Bytes that is a copy of another string.
Declaration
public FixedString512Bytes(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 FixedString512Bytes. |
FixedString512Bytes(in FixedString512Bytes)
Initializes and returns an instance of FixedString512Bytes that is a copy of another string.
Declaration
public FixedString512Bytes(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 FixedString512Bytes. |
FixedString512Bytes(in FixedString64Bytes)
Initializes and returns an instance of FixedString512Bytes that is a copy of another string.
Declaration
public FixedString512Bytes(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 FixedString512Bytes. |
FixedString512Bytes(Rune, int)
Initializes and returns an instance of FixedString512Bytes with a single character repeatedly appended some number of times.
Declaration
public FixedString512Bytes(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 509. Setting the value to anything other than 509 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 509. |
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 FixedList512Bytes<byte> AsFixedList()
Returns
| Type | Description |
|---|---|
| FixedList512Bytes<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 FixedString512Bytes.Enumerator GetEnumerator()
Returns
| Type | Description |
|---|---|
| FixedString512Bytes.Enumerator | An enumerator for iterating over the characters of the FixedString512Bytes. |
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 FixedString512Bytes, in FixedString128Bytes)
Returns true if a FixedString512Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString512Bytes a, in FixedString128Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString32Bytes)
Returns true if a FixedString512Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString512Bytes a, in FixedString32Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString4096Bytes)
Returns true if a FixedString512Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString512Bytes a, in FixedString4096Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString512Bytes)
Returns true if a FixedString512Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString512Bytes a, in FixedString512Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString64Bytes)
Returns true if a FixedString512Bytes and another string are equal.
Declaration
public static bool operator ==(in FixedString512Bytes a, in FixedString64Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes(string)
Returns a new FixedString512Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString512Bytes(string b)
Parameters
| Type | Name | Description |
|---|---|---|
| string | b | A string to copy. |
Returns
| Type | Description |
|---|---|
| FixedString512Bytes | A new FixedString512Bytes that is a copy of another string. |
Exceptions
| Type | Condition |
|---|---|
| IndexOutOfRangeException | Thrown if the string to copy's length exceeds the capacity of FixedString512Bytes. |
implicit operator FixedString4096Bytes(in FixedString512Bytes)
Returns a new FixedString4096Bytes that is a copy of another string.
Declaration
public static implicit operator FixedString4096Bytes(in FixedString512Bytes fs)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | fs | A FixedString512Bytes 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. |
operator !=(in FixedString512Bytes, in FixedString128Bytes)
Returns true if a FixedString512Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString512Bytes a, in FixedString128Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString32Bytes)
Returns true if a FixedString512Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString512Bytes a, in FixedString32Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString4096Bytes)
Returns true if a FixedString512Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString512Bytes a, in FixedString4096Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString512Bytes)
Returns true if a FixedString512Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString512Bytes a, in FixedString512Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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 FixedString512Bytes, in FixedString64Bytes)
Returns true if a FixedString512Bytes and another string are unequal.
Declaration
public static bool operator !=(in FixedString512Bytes a, in FixedString64Bytes b)
Parameters
| Type | Name | Description |
|---|---|---|
| FixedString512Bytes | a | A FixedString512Bytes 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.