Exemplo n.º 1
0
 //选择:选取数组中对象的某些成员形成一个独立的数组
 //多个学生【id age tall score】   【60,50,70,80】
 //       【“zs”,“ls”】
 static public TKey[] Select <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
 {
     TKey[] keys = new TKey[array.Length];
     for (int i = 0; i < array.Length; i++)
     {
         keys[i] = handler(array[i]);
     }
     return(keys);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 提取数组中每个元素的某个数据,组成新的数组
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <typeparam name="TKey">提取数据的类型</typeparam>
 /// <param name="array">源数据</param>
 /// <param name="handler">提取的条件</param>
 /// <returns>新数组</returns>
 public static TKey[] Select <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
 {
     TKey[] newArray = new TKey[array.Length];
     for (int i = 0; i < array.Length; i++)
     {
         newArray[i] = handler(array[i]);
     }
     return(newArray);
 }
Exemplo n.º 3
0
 public MobaClient(InitRequest initRequest) : base(initRequest)
 {
     account = new AccountHandler();
     player  = new PlayerHandler();
     select  = new SelectHandler();
     fight   = new FightHandler();
     player.StartSelectEvent += select.StartSelect;
     select.StartFightEvent   = fight.StartFight;
 }
Exemplo n.º 4
0
 public void AddReceiveSocket(Socket socket, SelectHandler handler)
 {
     if (socket == null || handler == null)
     {
         throw new ArgumentNullException();
     }
     receiveSockets.Add(socket);
     map.Add(socket, handler);
 }
Exemplo n.º 5
0
 public void UpdateConnectorToReceiver(Socket socket, SelectHandler handler)
 {
     if (handler == null)
     {
         throw new ArgumentNullException("handler");
     }
     connectList.Remove(socket);
     receiveSockets.Add(socket);
     map[socket] = handler;
 }
Exemplo n.º 6
0
        public void AddConnectSocket(Socket socket, SelectHandler handler)
        {
            if (socket == null || handler == null)
            {
                throw new ArgumentNullException();
            }

            connectList.Add(socket);
            map.Add(socket, handler);
        }
Exemplo n.º 7
0
        public MobaClient(InitRequest initRequest) : base(initRequest)
        {
            Account = new AccountHandler();
            Player  = new PlayerHandler();
            Select  = new SelectHandler();
            Fight   = new FightHandler();

            Player.StartSelectEvent = Select.StartSelect;
            Select.StartFightEvent  = Fight.StartSelect;
        }
Exemplo n.º 8
0
 /// <summary>
 /// 选择Select【6】:
 /// 从对象集合中提取每个对象的某个属性的值做成一个新的数组
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <typeparam name="TKey"></typeparam>
 /// <param name="array"></param>
 /// <param name="handler"></param>
 /// <returns></returns>
 public static TKey[] Select <T, TKey>(List <T> array,
                                       SelectHandler <T, TKey> handler)
 {
     TKey[] arrarNew = new TKey[array.Count];
     for (int i = 0; i < array.Count; i++)
     {
         arrarNew[i] = handler(array[i]);
     }
     return(arrarNew);
 }
Exemplo n.º 9
0
        public MOBAClient(InitRequest initRequest) : base(initRequest)
        {
            accountHandler = new AccountHandler();
            playerHandler  = new PlayerHandler();
            selectHandler  = new SelectHandler();
            battleHandler  = new BattleHandler();

            //添加事件监听
            playerHandler.StartSelectAction = selectHandler.StartSelect;
            selectHandler.StartBattleAction = battleHandler.StartBattle;
        }
Exemplo n.º 10
0
 void Start()
 {
     if (GameObject.Find("NetWork") != null)
     {
         select      = GameObject.Find("NetWork").GetComponent <SelectHandler>();
         select.Talk = showMsg;
     }
     sendBtn.onClick.AddListener(delegate
     {
         sendClick();
     });
 }
Exemplo n.º 11
0
 void Awake()
 {
     if (GameObject.Find("NetWork") == null)
     {
         return;
     }
     selectHandler = GameObject.Find("NetWork").GetComponent <SelectHandler>();
     if (selectHandler == null)
     {
         selectHandler = GameObject.Find("NetWork").AddComponent <SelectHandler>();
     }
 }
Exemplo n.º 12
0
        /// <summary>
        /// Helper method for listen sockets.  Automatically adds the new socket
        /// to this class with the given handler.
        /// </summary>
        /// <param name="listenSocket"></param>
        /// <param name="handler"></param>
        public void PerformAccept(Socket listenSocket, SelectHandler handler)
        {
            Socket newReceiveSocket = listenSocket.Accept();

            if (newReceiveSocket.Connected)
            {
                AddReceiveSocket(newReceiveSocket, handler);
            }
            else
            {
                newReceiveSocket.Close();
            }
        }
Exemplo n.º 13
0
    /// <summary>
    /// 通过某种方式比出最大的元素
    /// </summary>
    /// <param name="array">数据源</param>
    /// <param name="handler">比较条件</param>
    /// <returns>找到的元素</returns>
    public static T Max <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
        where TKey : IComparable, IComparable <TKey>
    {
        T max = array[0];

        for (int i = 1; i < array.Length; i++)
        {
            if (handler(max).CompareTo(handler(array[i])) < 0)
            {
                max = array[i];
            }
        }
        return(max);
    }
Exemplo n.º 14
0
    /// <summary>
    /// 找对象集合中最小的返回
    /// </summary>
    /// <typeparam name="T">数据类型</typeparam>
    /// <typeparam name="TKey">数据类型的属性</typeparam>
    /// <param name="array">数据类型的对象集合</param>
    /// <param name="handler">委托:从对象中选择属性,返回属性的值!</param>
    /// <returns>返回最大的</returns>
    static public T Min <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
        where TKey : IComparable, IComparable <TKey>
    {
        //T max = default(T);
        T min = array[0];

        for (int i = 1; i < array.Length; i++)
        {
            if (handler(min).CompareTo(handler(array[i])) > 0)
            {
                min = array[i];
            }
        }
        return(min);
    }
Exemplo n.º 15
0
    /// <summary>
    /// 2 返回最小对象
    /// </summary>
    /// <typeparam name="T">数据类型:如Student</typeparam>
    /// <typeparam name="TKey">数据类型的字段的类型:如int</typeparam>
    /// <param name="array">数据类型对象的数组</param>
    /// <param name="handler">选择委托对象</param>
    /// <returns>最大对象</returns>
    static public T Min <T, TKey>(List <T> array,
                                  SelectHandler <T, TKey> handler)
        where TKey : IComparable <TKey>
    {
        var min = array[0];

        for (int i = 1; i < array.Count; i++)
        {
            if (handler(min).CompareTo(handler(array[i])) > 0)
            {
                min = array[i];
            }
        }
        return(min);
    }
Exemplo n.º 16
0
    /// <summary>
    /// 4 找最小 返回: 通用的+方便的+跨平台
    /// </summary>
    /// <typeparam name="T">数据类型 :学生类</typeparam>
    /// <typeparam name="TKey">数据类型的某个属性:学生的年龄或身高</typeparam>
    /// <param name="array">数据类型的数组</param>
    /// <param name="handler">从某个对象中 选取某个属性的值返回的委托</param>
    public static T Min <T, TKey>
        (T[] array, SelectHandler <T, TKey> handler)
        where TKey : IComparable
    {
        T t = array[0];

        for (int i = 1; i < array.Length; i++)
        {
            if ((handler(t).CompareTo(handler(array[i]))) > 0)
            {
                t = array[i];
            }
        }
        return(t);
    }
Exemplo n.º 17
0
 //升序排列
 public static void OrderBy <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
     where TKey : IComparable <TKey>
 {
     for (int i = 0; i < array.Length - 1; i++)
     {
         for (int j = i + 1; j < array.Length; j++)
         {
             if (handler(array[i]).CompareTo(handler(array[j])) > 0)
             {
                 var temp = array[i];
                 array[i] = array[j];
                 array[j] = temp;
             }
         }
     }
 }
Exemplo n.º 18
0
    /// <summary>
    /// 3 返回最大的
    /// </summary>
    /// <typeparam name="T">数据类型</typeparam>
    /// <typeparam name="TKey">数据类型字段的类型</typeparam>
    /// <param name="array">数据类型对象的数组</param>
    /// <param name="handler">
    /// 委托对象:负责 从某个类型中选取某个字段 返回这个字段的值
    /// </param>
    static public T Max <T, TKey>
        (T[] array, SelectHandler <T, TKey> handler)
        where TKey : IComparable <TKey>
    {
        T temp = default(T);

        temp = array[0];
        for (int i = 1; i < array.Length; i++)
        {
            if (handler(temp).CompareTo(handler(array[i])) < 0)
            {
                temp = array[i];
            }
        }
        return(temp);
    }
Exemplo n.º 19
0
 /// <summary>
 /// 对对象集合降序排列
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <typeparam name="TKey">数据类型的属性</typeparam>
 /// <param name="array">数据类型的对象集合</param>
 /// <param name="handler">委托:从对象中选择属性,返回属性的值!</param>
 static public void OrderByDescending <T, TKey>(T[] array, SelectHandler <T, TKey> handler)
     where TKey : IComparable, IComparable <TKey>
 {
     for (int i = 0; i < array.Length - 1; i++)
     {
         for (int j = i + 1; j < array.Length; j++)
         {   //arrar[i]: int[],string[],Student[]>zs.age
             //if (array[i].CompareTo(array[j]) > 0)
             if (handler(array[i]).CompareTo(handler(array[j])) < 0)
             {
                 var temp = array[i];
                 array[i] = array[j];
                 array[j] = temp;
             }
         }
     }
 }
Exemplo n.º 20
0
 /// <summary>
 /// 2 降序排列: 通用的+方便的+跨平台
 /// </summary>
 /// <typeparam name="T">数据类型 :学生类</typeparam>
 /// <typeparam name="TKey">数据类型的某个属性:学生的年龄或身高</typeparam>
 /// <param name="array">数据类型的数组</param>
 /// <param name="handler">从某个对象中 选取某个属性的值返回的委托</param>
 public static void OrderByDescending <T, TKey>
     (T[] array, SelectHandler <T, TKey> handler)
     where TKey : IComparable
 {
     for (int i = 0; i < array.Length; i++)
     {
         for (int k = i + 1; k < array.Length; k++)
         {
             if ((handler(array[i]).CompareTo(handler(array[k]))) < 0)
             {
                 var temp = array[i];
                 array[i] = array[k];
                 array[k] = temp;
             }
         }
     }
 }
Exemplo n.º 21
0
    //Tkey float   T  CharacterState
    //public static float Handler(CharacterState t)
    //{
    //    return Vector3.
    //             Distance(skillTransform.position, p.transform.position);
    //}
    //绑定一个方法

    public static void OrderBy <T, TKey>(T[] items,
                                         SelectHandler <T, TKey> handler) where TKey : IComparable
    {
        T temp;

        for (int i = 0; i < items.Length - 1; i++)
        {
            for (int n = i + 1; n < items.Length; n++)
            {
                if (handler(items[i]).CompareTo(handler(items[n])) > 0)
                {
                    temp     = items[i];
                    items[i] = items[n];
                    items[n] = temp;
                }
            }
        }
    }
Exemplo n.º 22
0
    //推导
    //1实现 整数数组排序的方法 冒泡法
    //static public void OrderBy1(int[] array)
    //{
    //    for (int i = 0; i < array.Length; i++)
    //    {
    //        for (int j = i+1; j < array.Length; j++)
    //        {
    //            if (array[i].CompareTo(array[j]) > 0)
    //            {
    //                int temp = array[i];
    //                array[i] = array[j];
    //                array[j] = temp;
    //            }
    //        }
    //    }
    //}
    //static public void OrderBy2(string[] array)
    //{
    //    for (int i = 0; i < array.Length; i++)
    //    {
    //        for (int j = i + 1; j < array.Length; j++)
    //        {
    //            if (array[i].CompareTo(array[j]) > 0)
    //            {
    //                var temp = array[i];
    //                array[i] = array[j];
    //                array[j] = temp;
    //            }
    //        }
    //    }
    //}
    //如果 需要比较对象的其它属性,还要引入一个参数,指明是哪个属性
    //static public void OrderBy3<T>(T[] array)  //用于整数,字符串,对象默认字段 数组比较
    //    where T:IComparable<T>
    //{
    //    for (int i = 0; i < array.Length; i++)
    //    {
    //        for (int j = i + 1; j < array.Length; j++)
    //        {
    //            if (array[i].CompareTo(array[j]) > 0)
    //            {
    //                var temp = array[i];
    //                array[i] = array[j];
    //                array[j] = temp;
    //            }
    //        }
    //    }
    //}
    //static public void OrderBy3<T>(T[] array, IComparer<T> compare)
    //    where T : IComparable<T>//对象 非 默认字段 数组比较
    //{
    //    for (int i = 0; i < array.Length; i++)
    //    {
    //        for (int j = i + 1; j < array.Length; j++)
    //        {
    //            //默认    张三 年龄  李四 年龄  if (array[i].CompareTo(array[j]) > 0)
    //            //非默认 张三 身高  李四 身高  if (compare.Compare(array[i],array[j])>0)
    //            if (compare.Compare(array[i],array[j])>0)
    //            {
    //                var temp = array[i];
    //                array[i] = array[j];
    //                array[j] = temp;
    //            }
    //        }
    //    }
    //}

    /// <summary>
    /// 升序排序
    /// </summary>
    /// <typeparam name="T">数据类型</typeparam>
    /// <typeparam name="TKey">数据类型字段的类型</typeparam>
    /// <param name="array">数据类型对象的数组</param>
    /// <param name="handler">
    /// 委托对象:负责 从某个类型中选取某个字段 返回这个字段的值
    /// </param>
    static public void OrderBy <T, TKey>
        (T[] array, SelectHandler <T, TKey> handler)
        where TKey : IComparable <TKey>//对象 非 默认字段 数组比较
    {
        for (int i = 0; i < array.Length; i++)
        {
            for (int j = i + 1; j < array.Length; j++)
            {
                //默认    张三 年龄  李四 年龄  if (array[i].CompareTo(array[j]) > 0)
                //非默认 张三 身高  李四 身高  if (compare.Compare(array[i],array[j])>0)
                //使用委托取属性的值 去比较
                if (handler(array[i]).CompareTo(handler(array[j])) > 0)
                {
                    var temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
Exemplo n.º 23
0
 //冒泡
 //public static void OrderBy(int[] array)
 //{
 //    for (int i = 0; i < array.Length-1; i++)
 //    {
 //        for (int j =i+1; j < array.Length ; j++)
 //        {
 //            if (array[i].CompareTo(array[j]) > 0)
 //            {
 //                var temp = array[i];
 //                array[i] = array[j];
 //                array[j] = temp;
 //            }
 //        }
 //    }
 //}
 /// <summary>
 ///3 升序排序
 /// </summary>
 /// <typeparam name="T">数据类型:如Student</typeparam>
 /// <typeparam name="TKey">数据类型的字段的类型:如int</typeparam>
 /// <param name="array">数据类型对象的数组</param>
 /// <param name="handler">选择委托对象</param>
 public static void OrderBy <T, TKey>(List <T> array,
                                      SelectHandler <T, TKey> handler)
     where TKey : IComparable <TKey>
 {
     for (int i = 0; i < array.Count - 1; i++)
     {
         for (int j = i + 1; j < array.Count; j++)
         {
             //var tkey1 = handler(array[i]);
             //var tkey2 = handler(array[j]);
             //var re = tkey1.CompareTo(tkey2);
             //if (array[i].CompareTo(array[j]) > 0)
             if (handler(array[i]).CompareTo(handler(array[j])) > 0)
             {
                 var temp = array[i];
                 array[i] = array[j];
                 array[j] = temp;
             }
         }
     }
 }
Exemplo n.º 24
0
    /// <summary>
    /// 返回最小的
    /// </summary>
    /// <typeparam name="T">数据类型</typeparam>
    /// <typeparam name="TKey">数据类型字段的类型</typeparam>
    /// <param name="array">数据类型对象的数组</param>
    /// <param name="handler">
    /// 委托对象:负责 从某个类型中选取某个字段 返回这个字段的值
    /// </param>
    static public T Min <T, TKey>(T[] array, SelectHandler <T, TKey> handler) where TKey : IComparable <TKey>
    {
        T temp = default(T);

        if (array != null && array.Length != 0)
        {
            temp = array[0];
        }
        else
        {
            return(temp);
        }



        for (int i = 1; i < array.Length; i++)
        {
            if (handler(temp).CompareTo(handler(array[i])) > 0)
            {
                temp = array[i];
            }
        }
        return(temp);
    }
Exemplo n.º 25
0
 private void Select_button_Click(object sender, EventArgs e)
 {
     SelectHandler?.Invoke(this, null);
     Close();
 }
Exemplo n.º 26
0
        protected override Expression VisitMethodCall(MethodCallExpression m)
        {
            if (m.Method.DeclaringType == typeof(Queryable))
            {

                switch (m.Method.Name)
                {
                    case "Select":
                        Debug.Assert(selectHandler == null);
                        selectHandler =
                            SelectHandler.GetSelectHandler(indentLevel + 1, m, aggregateType);
                        if (selectHandler == null)
                        {
                            this.queryableMethods.Enqueue(m);
                        }
                        this.Visit(m.Arguments[0]);
                        break;
                    case "Join":
                        Debug.Assert(joinHandler == null);
                        Debug.Assert(crossJoinHandler == null);
                        joinHandler = JoinHandler.GetJoinHandler(this, indentLevel + 1, m);
                        break;
                    case "SelectMany":
                        Debug.Assert(crossJoinHandler == null);
                        Debug.Assert(joinHandler == null);
                        crossJoinHandler = CrossJoinHandler.GetCrossJoinHandler(this, indentLevel + 1, m);
                        break;
                    case "Where":
                        Debug.Assert(whereHandler == null);
                        int parameterBaseIndex = outerStatement == null ? 0 : outerStatement.ParameterCount;
                        whereHandler =
                            WhereHandler.GetWhereHandler(indentLevel + 1, m, parameterBaseIndex);
                        if (whereHandler == null)
                        {
                            this.queryableMethods.Enqueue(m);
                        }
                        this.Visit(m.Arguments[0]);
                        break;
                    case "OrderBy":
                    case "OrderByDescending":
                    case "ThenBy":
                    case "ThenByDescending":
                        var orderByHandler = OrderByHandler.GetOrderByHandler(indentLevel + 1, m);
                        if (orderByHandler == null)
                        {
                            this.queryableMethods.Enqueue(m);
                        }
                        else
                        {
                            orderByHandlers.Push(orderByHandler);
                        }
                        this.Visit(m.Arguments[0]);
                        break;
                    default:
                        queryableMethods.Enqueue(m);
                        this.Visit(m.Arguments[0]);
                        break;
                }
            }
            else
            {

                throw new NotSupportedException(string.Format("The method '{0}' is not supported", m.Method.Name));
            }

            return m;
        }
Exemplo n.º 27
0
 void Awake()
 {
     handler = GameObject.Find("NetWork").GetComponent <SelectHandler>();
     hero    = transform.Find("headBtn").GetComponent <Image>();
     btn     = transform.Find("headBtn").GetComponent <Button>();
 }
Exemplo n.º 28
0
        private void InitSelectHandler()
        {
            if (selectHandler != null)
            {
                return;
            }

            if (joinHandler != null)
            {
                selectHandler = SelectHandler.GetSelectHandler(indentLevel + 1,
                                    QueryableMethodsProvider.GetSelectCall(joinHandler.Selector),
                                    AggregateType.None);
                return;
            }

            if (crossJoinHandler != null)
            {
                selectHandler = SelectHandler.GetSelectHandler(indentLevel + 1,
                                    QueryableMethodsProvider.GetSelectCall(crossJoinHandler.Selector),
                                    AggregateType.None);
                return;
            }

            Type returnType = GetReturnType();

            if (returnType == null)
            {
                throw new InvalidOperationException("Cannot translate statement");
            }

            selectHandler = SelectHandler.GetSelectHandler(indentLevel + 1, returnType);
        }
Exemplo n.º 29
0
            public static SelectHandler GetSelectHandler(int indentLevel,
                                                         MethodCallExpression expression,
                                                         AggregateType aggregateType)
            {
                Debug.Assert(expression.Method.Name == "Select");
                Debug.Assert(expression.Arguments.Count == 2);
                Debug.Assert(expression.Arguments[0].Type.GetGenericArguments().Length == 1);

                var selector = GetLambdaExpression(expression.Arguments[1]).Parameters[0];

                if (selector.Type.Name == "IGrouping`2")
                {
                    return null;
                }

                SelectHandler selectHandler = new SelectHandler(indentLevel,
                                                                expression, aggregateType);

                return selectHandler;
            }
        public string LoginUserAccount()
        {
            SelectHandler selectAccount = new SelectHandler();

            return(selectAccount.SelectUserAccount(this));
        }
Exemplo n.º 31
0
        public void Run()
        {
            control.RunThread = Thread.CurrentThread;

            List <Socket> selectReadSockets = new List <Socket>();
            List <Socket> connectSockets, errorSockets;

            if (control.SupportsConnect)
            {
                connectSockets = new List <Socket>();
                errorSockets   = new List <Socket>();
            }
            else
            {
                connectSockets = null;
                errorSockets   = null;
            }

            while (true)
            {
                //
                // Perform the select
                //
                selectReadSockets.Clear();
                control.CopyReadSocketsTo(selectReadSockets);

                if (connectSockets == null || !control.HasConnectSockets)
                {
                    if (selectReadSockets.Count == 0)
                    {
                        return;
                    }

                    //Console.WriteLine("[DEBUG] Selecting on 0 connect sockets");
                    Socket.Select(selectReadSockets, null, null, Int32.MaxValue);
                }
                else
                {
                    connectSockets.Clear();
                    errorSockets.Clear();
                    control.CopyConnectSocketsTo(connectSockets);
                    control.CopyConnectSocketsTo(errorSockets);

                    if (selectReadSockets.Count == 0 && connectSockets.Count == 0)
                    {
                        return;
                    }

                    //Console.WriteLine("[DEBUG] Selecting on {0} connect sockets", connectSockets.Count);
                    Socket.Select(selectReadSockets, connectSockets, errorSockets, Int32.MaxValue);

                    control.ConnectionError = true;
                    for (int i = 0; i < errorSockets.Count; i++)
                    {
                        Socket        socket  = errorSockets[i];
                        SelectHandler handler = control.TryGetHandler(socket);
                        if (handler != null)
                        {
                            handler(ref control, socket, safeBuffer);
                        }
                    }
                    control.ConnectionError = false;
                    for (int i = 0; i < connectSockets.Count; i++)
                    {
                        Socket socket = connectSockets[i];
                        // Make sure you don't call the handler twice
                        if (!errorSockets.Contains(socket))
                        {
                            SelectHandler handler = control.TryGetHandler(socket);
                            if (handler != null)
                            {
                                handler(ref control, socket, safeBuffer);
                            }
                        }
                    }
                }

                for (int i = 0; i < selectReadSockets.Count; i++)
                {
                    Socket socket = selectReadSockets[i];

                    SelectHandler handler = control.TryGetHandler(socket);
                    if (handler != null)
                    {
                        handler(ref control, socket, safeBuffer);
                    }
                }
            }
        }