【转载】C#常用知识点汇总

本文大多是转载自凯奥斯,非常感谢大佬的文章!由于要开始找实习了,自己还没复习C#的高级特性,也不可能像C++那样可以花很长时间去学去写博客了,所以,站在巨人的肩膀吧,进入正题。

C#语法小知识(一)Equals和==的区别:
举个简单的例子:

System.Object o1 = 1;
System.Object o2 = 1;

分别打印o1==o2和o1.Equals(o2)得到的是False和True。
因为:官方文档里说了:默认情况下,运算符 == 通过判断两个引用是否指向同一对象来测试引用是否相等。所以,o1==o2结果是true。而Equals是虚函数(被Int32重载了的),所以o1.Equals(o2)实际上调用的是int(也就是Int32)的Equals方法,比较的是值是否相同。

C#语法小知识(二)struct和class的区别

C#语法小知识(三)枚举类型enum

(先看)补充:unity3d 超好用的委托模式
(再看)补充:[unity3d]unity中C#委托的应用
(后看)C#语法小知识(四)委托delegate

C#语法小知识(五)接口interface

属性:可将私有数据成员用作公共数据成员,可以轻松访问数据,在get和set中,可以加if条件,还可以在set中给其他public局部变量赋值以备用。

索引器:可以通过自定义的类的 对象名[] 对自定义的类中的数组或集合(如LIST)进行访问。当数组里的元素不是整型或者是对集合进行操作时,就需要加foreach遍历数组或集合;如果组里的元素是整型时,就不需要遍历,直接根据数组的下标进行找寻即可。
C# 类中索引器的使用
C#语法小知识(六)属性与索引器

C#语法小知识(七)特性

  1. 记住在Unity3D中,在类的上方加[ExecuteInEditMode]是让类在Edit模式下运行。
  2. [SerializeField]:所有显示在Inspector 中的属性都同时具有Serialize功能。换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件(即序列化的)。public 变量是默认被视为可以被Serialize的。所以public声明的变量在Inspector面板中是可见的。 [SerializeField]强制unity去序列化一个私有域,比如:
[SerializeField] 
private int foobar = 0; //private可不写,也是private的意思
//注意: 这样定义出的成员变量也是会在Inspector中显示出来。

所以, [SerializeField]序列化的变量在Inspector中可见,但用起来还是private的。
3. [RequireComponent(typeof(Rigidbody))]举个例子一个脚本可能需要刚体总是被添加在相同的game object(游戏物体)上。用RequireComponent属性的话,这个过程将被自动完成,因此你可以永远不会犯组装错误。每当该脚本被绑定到某物体上,就会给该物体自动绑定Rigidbody组件,且Rigidbody组件不能被删除。

C#语法小知识(八)扩展
忽略

C#语法小知识(九)事件
忽略

C#语法小知识(十)反射
不推荐普通程序员使用反射,忽略

C#语法小知识(十一)ref与out

你可能感兴趣的:(C#)