我有这个用例:
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以及字符串和“”之间的区别以及编译器将如何与它们进行交互?
答案 0 :(得分:1)
所有三个在C#中编译相同。 “var”关键字用于在编译时推断类型,编译器推断您正在使用字符串(与String相同)。
答案 1 :(得分:1)
string
是System.String
的别名,它们都编译为相同的代码,因此在执行时没有区别。
+
用于字符串连接,因此当您编写test1 + test2 + test3 + "Alugili"
时,它会连接所有字符串并形成一个字符串。在.net字符串中是不可变的,即字符串不能被改变。当您更改字符串时,实际上是在创建一个新字符串。
关于var MSDN说:
从Visual C#3.0开始,在方法范围声明的变量可以具有隐式类型var。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型。 i的以下两个声明在功能上是等效的: