String和string和var之间有什么区别?

时间:2013-09-11 13:03:06

标签: string

我有这个用例:

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和String以及字符串和“”之间的区别以及编译器将如何与它们进行交互?

2 个答案:

答案 0 :(得分:1)

所有三个在C#中编译相同。 “var”关键字用于在编译时推断类型,编译器推断您正在使用字符串(与String相同)。

答案 1 :(得分:1)

stringSystem.String的别名,它们都编译为相同的代码,因此在执行时没有区别。

+用于字符串连接,因此当您编写test1 + test2 + test3 + "Alugili"时,它会连接所有字符串并形成一个字符串。在.net字符串中是不可变的,即字符串不能被改变。当您更改字符串时,实际上是在创建一个新字符串。

关于var MSDN说:

  

从Visual C#3.0开始,在方法范围声明的变量可以具有隐式类型var。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型。 i的以下两个声明在功能上是等效的: