-5

我有这个用例:

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 以及 string 和 "" 之间的区别以及编译器将如何与它们交互?

4

2 回答 2

1

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

于 2013-09-11T13:05:51.387 回答
1

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

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

关于 var MSDN说:

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

于 2013-09-11T13:05:54.303 回答