using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Props : IShopGoodsInfo, IPropsAttributes, IGoodsAttributes
{
#region 公共成员
public int ID { get; private set; }
protected int[] m_GoodsAttributes;
/// <summary>
/// 默认道具
/// </summary>
public static readonly Props Default = new Props(0);
/// <summary>
/// 默认长度
/// </summary>
public static readonly int DefaultLength =2;
public Props(int id, int num = 0, int cost = 0)
{
ID = id;
m_GoodsAttributes = new int[DefaultLength];
this[0] = cost;
this[1] = num;
}
/// <summary>
/// 生成集合道具
(如果第一次不是构造,而是此方法生成,则会先赋值静态字段,而第一个静态字段【默认道具】会构造对象,此时不会调用静态构造,而是先构造,此时第二个静态字段 【默认长度】还没赋值,默认0,则构造时生成的数组是为0的长度,会抛出超出范围的异常。)
ps.所以应该把第一个静态字段放到第二个的下面。这是执行顺序的异常。
/// </summary>
/// <param name="IDlist">ID列表</param>
/// <returns></returns>
public static Dictionary<int, Props> CreateDic(IReadOnlyCollection<int> IDlist)
{
return IDlist.ToDictionary(k => k, v => new Props(v));
}
}