Type:String: Difference between revisions

From Resonite Wiki
Added a bit more info, to help start the nitty gritty here
m cat
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
A String is a sequence of  [[char]] values, and is seen in C# (which Resonite is written in). A String is considered an object not a value internally and when choosing the difference between an object or a value. In the case of choosing between only either a reference or a value, it is under value.
The '''string''' type is a direct interface to [https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/ the string type in C#].


Strings are considered a [[value type]] in the FrooxEngine data model, but an [[Type:object|object]] in the ProtoFlux data model.


A String can be made in [[ProtoFlux]] by concatenating different Strings together, or by concatenating 2 or more [[char]] objects together.
Strings are sequences of [[Type:char|chars]], and as such are [https://en.wikipedia.org/wiki/UTF-16 UTF-16] encoded. When representing characters that are outside the [https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane Basic Multilingual Plane], a pair of two <code>char</code>s is used, known as a [https://en.wikipedia.org/wiki/Surrogate_pair#U+D800_to_U+DFFF_(surrogates) surrogate pair]. Due to this, not every character in a string may be mapped directly to one <code>char</code>, and this can cause confusion when using ProtoFlux nodes on strings containing non-BMP characters. Additionally, stray surrogate characters that are not part of a surrogate pair may not behave as intended.
 
Strings may be used a primitive form of 16-bit [[Type:Int|integer]] arrays in [[ProtoFlux]] by way of the [[ProtoFlux:Get Character|Get Character]] node and [[ProtoFlux:To UTF16|To UTF16]] node.
 
== See Also ==
 
* [[:Category:ProtoFlux:Strings]]
* [https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/ A general overview of C# strings from Microsoft]
* [https://learn.microsoft.com/en-us/dotnet/api/system.string Microsoft documentation on the C# String class]
 
[[Category:Type]]
[[Category:Value types]]

Latest revision as of 17:31, 18 April 2025

The string type is a direct interface to the string type in C#.

Strings are considered a value type in the FrooxEngine data model, but an object in the ProtoFlux data model.

Strings are sequences of chars, and as such are UTF-16 encoded. When representing characters that are outside the Basic Multilingual Plane, a pair of two chars is used, known as a surrogate pair. Due to this, not every character in a string may be mapped directly to one char, and this can cause confusion when using ProtoFlux nodes on strings containing non-BMP characters. Additionally, stray surrogate characters that are not part of a surrogate pair may not behave as intended.

Strings may be used a primitive form of 16-bit integer arrays in ProtoFlux by way of the Get Character node and To UTF16 node.

See Also