Объект String ведет себя как тип Value при использовании операторов == и! =, Что означает, что проверяется фактический объект, а не ссылка.
А как насчет передачи параметров, присвоений и копирования?
Передача параметров строки:
Когда ссылочный тип передается методу, его ссылка копируется, но базовый объект остается прежним.
Будет ли это также верно для типа String в C #? Я имею в виду, что в приведенном ниже коде будет 2 указателя (messageVar и messageParam), указывающих на один и тот же объект:
public static void main()
{
string messageVar = "C#";
Test(messageVar);
// what about in assignement?
string messageVar2 = messageVar;
}
public void Test(string messageParam)
{
// logic
}
Как насчет того, когда он назначен переменной? Я предполагаю, что ссылка будет скопирована только, а фактический объект останется таким же кэшированным в String Intern Pool. Не уверен.
Будет ли messageVar2 также ссылаться на тот же объект?
Спасибо