SkelletonX Postado Fevereiro 4, 2016 Denunciar Compartilhar Postado Fevereiro 4, 2016 (editado) Switch Esta instrução é outro modo para simular o uso de varias instruções if e pode somente verificar uma relação de igualdade. Todos os tipos primitivos (int, string, decimal, etc) podem ser usados nas instruções switch/case. Com relação à instrução case, ela avalia apenas o argumento que apresenta o mesmo tipo (string para string, int para int, etc) definido na instrução switch. Devemos ter muita atenção e cuidado ao fato de que o argumento da instrução case deve ser resolvido no tempo de compilação. Devido a isto, usamos uma variável constante com um valor literal na instrução case. Vou dar um exemplo com int : using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SkelletonX { class Program { static void Main(string[] args) { int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("se for 1 cai aqui"); break; case 2: Console.WriteLine("se for 2 cai aqui"); break; default: Console.WriteLine("se não for 1 ou 2 cai aqui"); break; } Console.ReadKey(); } } } int caseSwitch = 1; // 1 = esse é o numero que vai escolher no case, como podemos ver temos o : case 1: Console.WriteLine("se for 1 cai aqui"); break; se o int caseSwitch = 1 é 1 vai cair no case 1 se for int caseSwitch = 2 vai cair no case 2 podemos usar string no switch tbm string diaDaSemana = Console.ReadLine(); switch (diaDaSemana) { case "Domingo": Console.WriteLine("Você informou o dia 1"); break; case "Segunda": Console.WriteLine("Você informou o dia 2"); break; case "Terça": Console.WriteLine("Você informou o dia 3"); break; case "Quarta": Console.WriteLine("Você informou o dia 4"); break; case "Quinta": Console.WriteLine("Você informou o dia 5"); break; case "Sexta": Console.WriteLine("Você informou o dia 6"); break; case "Sábado": Console.WriteLine("Você informou o dia 7"); break; } é a mesma coisa que o int porem é string. Obs: O comando switch/case não pode usar operadores lógicos (&&, || ou !). Podemos completar o uso da instrução switch/case com o comando default. Ele será executado sempre que o valor da variável em questão não encontrar um valor case correspondente, sendo assim o valor padrão. Aplicado a nosso exemplo a cima, ele ficaria assim: default: Console.WriteLine("O dia informado não existe!"); break; é isso Lembrando Switch é bastente usado para fazer gerenciador de dados para emulador de jogos. Ex: private void handlePacket(byte[] buff) { ushort num = BitConverter.ToUInt16(new byte[] { buff[0], buff[1] }, 0); BitConverter.ToString(buff).Replace("-", " "); if (this.networkDebug) { string[] strArray = BitConverter.ToString(buff).Split(new char[] { '-', ',', '.', ':', '\t' }); string str = ""; foreach (string str2 in strArray) { str = str + "0x" + str2 + " "; } } List<ReceiveBaseLoginPacket> list = new List<ReceiveBaseLoginPacket>(); if (_isConnectedAviable) { switch (num) { case 0xa0f: list.Add(new opcode_2575_REQ(this, buff)); break; case 0xa11: list.Add(new CM_BASE_USER_LEAVE(this, buff)); break; case 0xa13: list.Add(new opcode_2579_REQ(this, buff)); break; case 0xa5e: list.Add(new CM_USER_LEAVE(this, buff)); break; case 0xa01: case 0xa03: Thread.Sleep(500); list.Add(new CM_BASE_LOGIN(this, buff)); break; case 0xa05: list.Add(new CM_BASE_GET_MYINFO(this, buff)); break; case 0xa07: list.Add(new CM_BASE_GET_MYFRIENDS(this, buff)); break; case 0: _isConnectedAviable = false; break; case 0xa65: list.Add(new opcode_2660_REQ(this, buff)); break; case 0xa6a: list.Add(new opcode_2667_REQ(this, buff)); break; case 0xa76: list.Add(new opcode_2678_REQ(this, buff)); break; default: CLogger.getInstance().info_red("|[PB Server]| Opcode n\x00e3o encontrado: " + num); break; } if ((list != null) && (list.ToArray().Length > 0)) { foreach (ReceiveBaseLoginPacket packet in list) { ThreadManager.runNewThread(new Thread(new ThreadStart(packet.run))); } } } } Editado Fevereiro 4, 2016 por Skelleton Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Fevereiro 4, 2016 Denunciar Compartilhar Postado Fevereiro 4, 2016 Legal, a mesma coisa que a maioria das linguagens c-like. Ah, verificar se o list é nulo é redundante, tu ta instanciando ele logo acima, e não vejo necessidade de converter a lista pra Array só pra verificar o tamanho, tendo em mente que a próprio tipo List já tem um método pra pegar o tamanho. 1 Link para o comentário Compartilhar em outros sites More sharing options...
lucakiksd07 Postado Junho 29, 2019 Denunciar Compartilhar Postado Junho 29, 2019 Seu tópico foi marcado como Inativo. Para reverter esta ação, entre em contato com a equipe de Moderação. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados