C# HideFlags类
HideFlags.NotEditable; 整个对象的inspector面板在运行时都不可编辑
HideFlags.NotEditable; 对象上的某个属性在运行时不可编辑
HideFlags.HideInHierarchy; 运行时该对象不会出现在hierarchy面板上,但是scene视图和game视图上还能看到
HideFlags.HideInInspector; 在运行时该对象的inspector面板属性不可见
HideFlags.HideInInspector; 在运行时该对象在inspector的某个属性不可见
C# Dictionary.TryGetValue()和Dictionary.ContainsKey()
当在字典中不确定是否存在有该Key值时候可以使用Dictionary.TryGetValue(key, out result);
这么做可以避免Key值不存在而报错。
注意:out修饰的变量在函数内部没有赋予初值,则会报错。
C# Lambda表达式
member => expression
Lambda表达式以=>符号分隔左右,左边是输入参数,右侧则是lambda主体(方法体),expression的返回值必须能够隐式转化成member的类型。
Lambda表达式往往要用于委托对象,如下:
Action studyA1;
Action<int> studyA2;
void Start()
{
studyA1 = () => {
Debug.Log("Lambda");
}; //“Lambda”
studyA1();
studyA2 = x => {
Debug.Log(x);
};
studyA2(10); //“10”
studyA2 = (x) => { Debug.Log(x + 233); };//也可以省略参数类型
studyA2(10); //“243”
}
C# 实例化接口对象
转载https://www.cnblogs.com/holyson/p/3914154.html原作者的博客
可以把实现某一接口类创建的对象的引用赋给该接口声明的接口变量,那么该
接口变量就可以调用被类实现的接口中的方法。
interface Itemp
{
double plus();
}
public class num : Itemp
{
double aa, bb;
public num(double a, double b)
{
this.bb = b;
this.aa = a;
}
public double plus()
{
return (aa * bb);
}
}
class Program
{
static void Main(string[] args)
{
num n = null;//声明类对象引用
Itemp tm = null;//声明接口对象引用
tm = new num(1.1, 2.2);//接口回调(向上转型)
Console.WriteLine(tm.plus());
Console.ReadKey();
}
}
C# 关于协程的简单理解
作为一个笨蛋,理解了很久。
简单来说就是,在迭代器中,程序一旦运行到yield的语句时,就会自动挂起,等完成yield语句的条件后,自动运行yield下一行的语句。
协程,是在主程序运行的同时,开启另一端逻辑处理,协同主程序的运行。