Объект 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 также ссылаться на тот же объект?
Спасибо,