2013-09-11 4 views
-5

У меня есть этот случай использования:В чем разница между строкой и строкой и var?

using System; 
namespace ConsoleApplication11 
{ 
    using System.Collections.ObjectModel; 

    public class Program 
    { 
    static void Main(string[] args) 
    { 
     var test2 = "Name"; 
     string test1 = "Name"; 
     String test3 = "Name"; 

    Console.WriteLine(test1 + test2 + test3 + "NameNotDefined"); 
    } 
} 
} 

Что будет делать компилятор:

  • в этой строке Console.WriteLine(test1 + test2 + test3 + "Alugili");?
  • с последним "NameNotDefined"?

Был ли вызов компилятора ToString() для каждого из них, а не для применения + оператора?

Любое тело может объяснить мне разницу между var и строкой и строкой и «» и как будет взаимодействовать с ними?

+14

О Боже, убей меня сейчас .. –

+0

'string' является псевдонимом' System.String' 'var' временно – Praveen

+3

@ Название переменной user1671639 Что ад вы даже говорите? –

ответ

1

Все три компилируются одинаково в C#. Ключевое слово «var» используется для вывода типа во время компиляции, а компилятор указывает, что вы используете строку (что то же самое, что и String).

1

string - это псевдоним для System.String, оба они скомпилированы по одному и тому же коду, поэтому во время выполнения нет разницы.

+ используется для конкатенации строк, поэтому, когда вы пишете test1 + test2 + test3 + "Alugili", он объединяет все строки и формирует одну строку. Строки .net неизменяемы, т. Е. Строки не могут быть изменены. Когда вы изменяете строку, вы на самом деле создаете новую строку.

О вар MSDN говорит, что это:

Начиная с Visual C# 3.0, переменные, объявленные в методе сферы могут иметь неявный тип вар. Неявно типизированная локальная переменная строго типизирована так же, как если бы вы объявили тип самостоятельно, но компилятор определяет тип. Следующие два заявления I функционально эквивалентны:

+0

Итак, в последнем «Alugili» будет создан новый объект типа string и введен в код, который вы имеете в виду? –

+1

@Bassam Alugili - Да, для получения дополнительной информации ознакомьтесь с этой ссылкой MSDN http://msdn.microsoft.com/en-us/library/ms228362%28v=vs.90%29.aspx – Bibhu

Смежные вопросы