Структура просто содержит ссылку на строку.Почему это может вызвать проблемы?Ссылка это просто значение.Когда вы копируете значение структуры (например, с помощью присваивания или передачи его методу), ссылка также будет скопирована.Обратите внимание, что если вы измените значение поля в одной копии структуры, это не изменит значение в другой копии:
using System;
public struct Example
{
public int a;
public string name;
}
class Test
{
static void Main()
{
Example t1 = new Example();
t1.name = "First name";
Example t2 = t1;
t2.name = "Second name";
Console.WriteLine(t1.name); // Prints "First name"
Console.WriteLine(t2.name); // Prints "Second name"
}
}
Если бы Example
был классом, они обавыведите «Second name», поскольку значения t1
и t2
будут ссылками на один и тот же экземпляр.
Это также не относится к строкам - любой ссылочный тип будет работать.1010 * Однако я бы настоятельно не рекомендовал бы создавать изменяемые структуры или открывать открытые поля.