LinkedList的学习以前用的都是list对这块没有设计
Linkedlist是容易插入但无法用索引
可以用for循环遍历
LinkedList<int> listValue = new LinkedList<int>();
// Start is called before the first frame update
void Start()
{
listValue.AddLast(23);
listValue.AddFirst(1);
listValue.AddLast(33);
for (LinkedListNode<int> curent= listValue.First; curent!=null;curent=curent.Next)
{
Debug.Log(curent.Value);
}
}
对T泛型还是不太了解,明白,但是自己不会写出来日后还要多练习
/// <summary>
/// 获取指定管理器
/// </summary>
public T GetManager<T>() where T : ManagerBase
{
Type managerType = typeof(T);
foreach (ManagerBase manager in m_Managers)
{
if (manager.GetType() == managerType)
{
return manager as T;
}
}
//没找到就创建
return CreateManager(managerType) as T;
}
Type,Typeof,GetType
虽然都能获得Type,但是两者是有区别的
typeof() 相当于一种运算符,它是获得类型的Type ,所传的参数只能是类型名称,而不能是实例对象
GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用(初始化以后)
C#中的事件就是一种特殊的委托类型,用于实现发布-订阅模式。一个类可以发布事件,其他类可以订阅这些事件并提供响应方法。当事件触发时,所有订阅者的方法会被依次调用。
public class Publisher
{
public event EventHandler<MyEventArgs> CustomEvent;
protected virtual void OnCustomEvent(MyEventArgs e)
{
CustomEvent?.Invoke(this, e);
}
public void TriggerEvent()
{
OnCustomEvent(new MyEventArgs("Event triggered"));
}
}
public class Subscriber
{
public void Subscribe(Publisher publisher)
{
publisher.CustomEvent += OnCustomEvent;
}
private void OnCustomEvent(object sender, MyEventArgs e)
{
Console.WriteLine($"Subscriber received event: {e.Message}");
}
}