C# 公用复制
1.泛型快速排序
repress_list.Sort(SortList); private int SortList(ConfigRepress a, ConfigRepress b) //a b表示列表中的元素 { if (a.Id > b.Id) { return 1; } else if (a.Id < b.Id) { return -1; } return 0; }
2.秒数快速转换为时间格式字符串 00:00
/** * 把秒转化为时分秒的字符串 〈简述〉 〈详细描述〉 * * @author gongsf * @param time 整形秒数 * @return 返回时分秒格式(01:23:20) */ public static String secToTime(int time) { String timeStr = null; int hour = 0; int minute = 0; int second = 0; if (time <= 0) return "00:00"; else { minute = time / 60; if (minute < 60) { second = time % 60; timeStr = unitFormat(minute) + ":" + unitFormat(second); } else { hour = minute / 60; if (hour > 99) return "99:59:59"; minute = minute % 60; second = time - hour * 3600 - minute * 60; timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second); } } return timeStr; } public static String unitFormat(int i) { String retStr = null; if (i >= 0 && i < 10) retStr = "0" + Integer.toString(i); else retStr = "" + i; return retStr; }
圆的位置关系判定
/// <summary> /// 判断圆的位置关系 /// </summary> /// <param name="ar"></param> /// <param name="br"></param> /// <param name="d"></param> /// <returns></returns> public static PositionRelationType CircularPositionRelation(float ar,float br,float d) { //1)d > R + r 两圆外离; 两圆的圆心距离之和大于两圆的半径之和。 //(2)d = R + r 两圆外切; 两圆的圆心距离之和等于两圆的半径之和。 //(3)d = R - r 两圆内切; 两圆的圆心距离之和等于两圆的半径之差。 //(4)d < R - r 两圆内含;两圆的圆心距离之和小于两圆的半径之差。 //(5)d < R + r 两园相交;两圆的圆心距离之和小于两圆的半径之和。 PositionRelationType flag = PositionRelationType.None; if (d > ar + br) { flag = PositionRelationType.Outer; } else if (d == ar + br) { flag = PositionRelationType.Exotomy; } else if (d == ar - br) { flag = PositionRelationType.Endotomy; } else if (d < ar - br) { flag = PositionRelationType.Include; } else if (d < ar + br) { flag = PositionRelationType.Intersect; } return flag; } public enum PositionRelationType { None, /// <summary> /// 外离 /// </summary> Outer, /// <summary> /// 外切 /// </summary> Exotomy, /// <summary> /// 内切 /// </summary> Endotomy, /// <summary> /// 内含 /// </summary> Include, /// <summary> /// 相交 /// </summary> Intersect, }
C# MD5加密字符串
/// <summary> /// 用MD5加密字符串,可选择生成16位或者32位的加密字符串 /// </summary> /// <param name="password">待加密的字符串</param> /// <param name="bit">位数,一般取值16 或 32</param> /// <returns>返回的加密后的字符串</returns> public string MD5Encrypt(string password, int bit) { MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); byte[] hashedDataBytes; hashedDataBytes = md5Hasher.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(password)); StringBuilder tmp = new StringBuilder(); foreach (byte i in hashedDataBytes) { tmp.Append(i.ToString("x2")); } if (bit == 16) return tmp.ToString().Substring(8, 16); else if (bit == 32) return tmp.ToString();//默认情况 else return string.Empty; }
/// <summary> /// 用MD5加密字符串 /// </summary> /// <param name="password">待加密的字符串</param> /// <returns></returns> public string MD5Encrypt(string password) { MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); byte[] hashedDataBytes; hashedDataBytes = md5Hasher.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(password)); StringBuilder tmp = new StringBuilder(); foreach (byte i in hashedDataBytes) { tmp.Append(i.ToString("x2")); } return tmp.ToString(); }
枚举名称转字符串
Console.WriteLine(nameof(Di.Railway));
for循环边循环边删除
/// <summary> /// 更新并返回被对象引用的数量 /// </summary> /// <returns></returns> private int UpdateReference() { for (int i = 0; i < references.Count; i++) { Object o = (Object)references[i].Target; if (!o) { references.RemoveAt(i); i--; } } return references.Count; } #endregion
当然这里如果修改for括号里为i--也行
公共迭代器
using (LinkedList<Buff>.Enumerator itr = mBuffList.GetEnumerator()) { //Debug.Log("准备循环开始"); while (itr.MoveNext()) { //Debug.Log("循环中"); itr.Current.Update(fTick); if (itr.Current.HasFinished()) { mHandleList.AddLast(itr.Current); } } //Debug.Log("准备循环结束"); }
公告迭代器2
using (var itr = mAttackHitList.GetEnumerator()) { while (itr.MoveNext()) { if (itr.Current.IsDead) mHandleList.AddLast(itr.Current); else itr.Current.Update(fTick); } }
无GC迭代器
using (var list = AssemblySolver.updateSystems.GetDictionary().GetEnumerator()) { while (list.MoveNext()) { using (var list2 = list.Current.Value.GetEnumerator()) { while (list2.MoveNext()) { list2.Current.Update(fTick); } } } }
end

浙公网安备 33010602011771号