Как тип String передается методу или присваивается переменной в C #?

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

Спасибо,

5
задан The Light 11 February 2012 в 17:13
поделиться