C#学习-C# 3.0

C# 3.0 版本 C# 3.0 新增的语法特性,如下: 自动实现的属性 匿名类型 查询表达式(LINQ) 表达式 表达式树 扩展方法 隐式类型本地变量 分部方法 对象和集合初始值设定项 自动实现属性 这个特性非常简单,代码如下: public class PropertyExample { // C# 3.0之前 private string mNickName; public string NickName { get { return mNickName; } set { mNickName = value; } } // C# 3.0 public string Name { get; set; } } 非常简单,看代码就懂了。 匿名类型 代码也很简单,如下: var person = new {Title = "Name"}; Debug.Log(person.Title); lambda 表达式 lambda 表达式非常简单,就是匿名方法的一种表现,如下: using System; public class LambdaExpressionExample { void Func() { } void Main() { // C# 1.0 Action action1 = new Action(Func); // C# 2.0 Action actionB = delegate { }; // C# 3.0 Action acionC = () => { }; } } 表达式树 表达式树实际上是 Expression 这个 API 的使用,先看下代码,如下: ...

December 5, 2021 · 6 min · LiuYingbo

C#学习-C# 2.0

C# 2.0 版本 在 C# 2.0 版本提供的特性如下: 泛型 分部类型(partial) 匿名方法 可以为 null 的值类型 迭代器 协变和逆变 getter/setter 单独可访问性 方法组转换(委托) 静态类 委托推断 泛型 最常用的 List 就是泛型的一个应用。 C# 文档地址:泛型 泛型 API 的设计 要设计一个泛型 的 API 非常简单,看以下代码中的 GetTypeName 方法。 using UnityEngine; namespace QFramework.Master { public class ReflectionExample : MonoBehaviour { string GetTypeName<T>() { var type = typeof(T); return type.Name; } private void Awake() { Debug.Log(GetTypeName<string>()); } } } // 输出结果: // String 泛型可以把一个类或者一个方法,当做一个模板,而这个模板所需要填充的内容则是定义的各种类型,所以泛型可以最大限度地实现代码的复用。 C# 什么要实现泛型? C# 实现泛型这个特性,肯定是为了解决开发者遇到的实际问题的,要想知道泛型具体解决了什么问题,那么就要回过头看看没实现泛型之前的 C# 语言有什么样的问题? 在 C# 实现泛型之前,我们只能使用 ArrayList 来充当不定长的数组。 ...

December 5, 2021 · 9 min · LiuYingbo