class CSharp30_Demo1
{
public override string ToString()
{
//隐式变量
int i = 5; var vi = 10;
double d = 3.14; var vd = 3.14;
string s = "Hello"; var vs = "World";
CSharp30_Demo1 demo = new CSharp30_Demo1(); var vcs30_ITLVA = new CSharp30_Demo1();
//隐式数组
int[] ai = { 1, 2, 3 };
var vai = new[] { 1, 2, 3 };
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0}{1}", i.GetType() == vi.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", d.GetType() == vd.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", s.GetType() == vs.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", demo.GetType() == vcs30_ITLVA.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", ai.GetType() == vai.GetType() ? "Yes" : "No", Environment.NewLine);
return sb.ToString();
}
public static void Show()
{
Console.WriteLine("CS3.0 - 隐式类型本地变量和数组 (Implicitly typed local variables){0}{1}{0}{2}{0}",
Environment.NewLine, "——————————————————————————————",
new CSharp30_Demo1().ToString());
}
}
{
public override string ToString()
{
//隐式变量
int i = 5; var vi = 10;
double d = 3.14; var vd = 3.14;
string s = "Hello"; var vs = "World";
CSharp30_Demo1 demo = new CSharp30_Demo1(); var vcs30_ITLVA = new CSharp30_Demo1();
//隐式数组
int[] ai = { 1, 2, 3 };
var vai = new[] { 1, 2, 3 };
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0}{1}", i.GetType() == vi.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", d.GetType() == vd.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", s.GetType() == vs.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", demo.GetType() == vcs30_ITLVA.GetType() ? "Yes" : "No", Environment.NewLine);
sb.AppendFormat("{0}{1}", ai.GetType() == vai.GetType() ? "Yes" : "No", Environment.NewLine);
return sb.ToString();
}
public static void Show()
{
Console.WriteLine("CS3.0 - 隐式类型本地变量和数组 (Implicitly typed local variables){0}{1}{0}{2}{0}",
Environment.NewLine, "——————————————————————————————",
new CSharp30_Demo1().ToString());
}
}
可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。
下列限制适用于隐式类型的变量声明:
只有在同一语句中声明和初始化局部变量时,才能使用 var;不能将该变量初始化为 null。
不能将 var 用于类范围的域。
由 var 声明的变量不能用在初始化表达式中。换句话说,var v = v++; 会产生编译时错误。
不能在同一语句中初始化多个隐式类型的变量。
如果一个名为 var 的类型位于范围中,则当您尝试用 var 关键字初始化局部变量时,将收到编译时错误。
在查询表达式中,当难以确定查询变量的确切构造类型时,您会发现 var 也很有用。这种情况可能发生在分组和排序操作中。