1,隐式类型化的局部变量
class Program
{
static void Main(string[] args)
{
var i = 5;
var j = "hello word!";
var k = new int[] { 1,2,3,4,5};
var x = 3.14f;
Console.WriteLine(i.GetType());
Console.WriteLine(j.GetType());
Console.WriteLine(k.GetType());
Console.WriteLine(x.GetType());
Console.ReadKey();
}
}
注意事项:1,在声明时必须同时赋值,因为声明依赖于右边的表达式;
2,声明隐式类型局部变量后,它仍然是一个强类型,所以不能为他赋值为:null;编译器无法根据null推断出具体的额类型。
3,var声明的类型,仅限于局部变量(不能在类中定义var类型变量)该类型还可以包含在(foreach,for,using)等语句中。
2,扩展方法
public static 返回值类型 扩展方法名(this 要扩展的类型 sourceObj[参数列表])
class A
{
public void Method1()
{
Console.WriteLine("A类Method1方法");
}
}
static class Extension
{
public static void Method2(this A a)
{
Console.WriteLine("Extension类的Method2方法");
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Method2();
Console.ReadKey();
}
}
注意事项:1,扩展方法所在的类必须是静态类,类名可以是任意合法类名
2,被扩展类的访问修饰必须大于或等于扩展方法所在类的访问修饰符
3,扩展方法无法覆盖(重写)原类中的同名(参数名和类型相同)的方法,不要去重写原类中的方法,这样没有任何意义,结果只会调用原类中的方法。
3,自动属性
class Program
{
//2.0:
private int _id;
public int Id
{
set { _id = value; }
get { return _id; }
}
//3.5:
public int Id3
{
get;
set;
}
static void Main(string[] args)
{
}
}
4,对象与集合初始化器
class Book
{
public string BookName { get; set; }
public decimal Price { get; set; }
public string Content { get; set; }
}
class Program
{
static void Main(string[] args)
{
//Book book1 = new Book();
//book1.BookName = "java";
//book1.Price = 100;
//book1.Content = "bfjdhfj";
//对象初始化器
//Book book2 = new Book { BookName = "ADO.NET", Price = 50, Content = "DotNET数据库开发" };
//Console.WriteLine("书名:{0},价格{1},内容{2}",
//book2.BookName,book2.Price,book2.Content);
//集合初始化器
List<Book> list = new List<Book>()
{
new Book(){BookName = "ASP.NET", Price = 80, Content = ".NET数据库开发"},
new Book(){BookName = "SQL Server", Price = 60, Content = "SQL数据库开发"},
new Book(){BookName = "XML编程", Price = 40, Content = "ET数据库开发"}
};
foreach (var book in list)
{
Console.WriteLine("书名:{0},价格{1},内容{2}",
book.BookName,book.Price,book.Content);
}
//ist.Add(new Book());
Console.ReadKey();
}
}
5,匿名类型
class Program
{
static void Main(string[] args)
{
//匿名类型(Ling编程)
var s1=new {Name="张三",Age=13};
var s2 = new { Name = "李四", Age = 23 };
var s3 = new {Name="王五",Address="金华"};
Console.WriteLine(s1.GetType());
Console.WriteLine(s2.GetType());
Console.WriteLine(s3.GetType());
Console.ReadKey();
}
}