第11章后--c3.5语言新特性

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();
        }
    }

 

转载于:https://www.cnblogs.com/xyb1117/archive/2012/02/24/2366883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值