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 > 99return "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

posted @ 2019-02-13 09:53  大刀乱飞  阅读(100)  评论(0)    收藏  举报