再用2008一段时间了,但是C#3.0的新特性却一直没有学,今天边学边练,体验新特性给我能带来什么便捷。
1.隐含类型局部变量
关键字var 从右边自动识别对象类型,是强类型,且仅限于局部变量
var a = "abc";
var b = new []{1,2,3,5};
var c = null; 不是类型,不能用
var d; 不可以
比如:foreach(var c in list<string>)
{...}

2.扩展方法
不改变现有类型的实例方法的情况下,扩展类的方法。Extention
static class Extention{static void Foo(this string s){...}}

给我的感觉就是对象调用全局方法。。
不需要通过继承方式扩展方法
缺点就是不能override

当出现方法重名时的优先级问题:
当前实例方法
最近的NameSpace的Extention Method
较远的NameSpace的Extention Method


3.对象与集合初始化器
    public class point
    {
        int x, y;
        public int Y
        {get { return y; }set { y = value; }}
        public int X
        {get { return x; }set { x = value; }}
    }
对象初始化
var e = new point { X = 1, Y = 0 };
集合初始化,不需通过ADD方法,以前比如构造个List,都要一个个现在就不用了
var b = new List<string> { "a","b","c","d"};

4.匿名类型
var e_1 = new { Name = "张三", age = 18 };

以下是我自己边学,练手用的测试代码

我的C# 3.0之新特性学习笔记(1)using System;
我的C# 3.0之新特性学习笔记(1)
using System.Collections.Generic;
我的C# 3.0之新特性学习笔记(1)
using System.Linq;
我的C# 3.0之新特性学习笔记(1)
using System.Text;
我的C# 3.0之新特性学习笔记(1)
using DemosTest;
我的C# 3.0之新特性学习笔记(1)
namespace DemosTest
        }

学完这些,感觉在新版C#3.0 微软给我的感觉是越来越灵活,某些程度上感觉方便些。
比如不需要通过继承或者改写类来扩展类的方法,匿名对象在局部使用时,比较方便,不需要构造太多的东西。
但是同时可能会造成滥用后的混乱,和不易维护。

相关文章:

  • 2021-10-16
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-11
  • 2021-08-06
猜你喜欢
  • 2021-08-16
  • 2022-02-21
  • 2021-12-22
  • 2021-08-05
  • 2022-12-23
  • 2021-08-04
  • 2021-10-01
相关资源
相似解决方案