C#在Class中使用Class作为对象
发布时间:2020-12-16 01:53:53 所属栏目:百科 来源:网络整理
导读:我是C#的新手,我在尝试编写代码时遇到了一些问题. 我必须制作一个简单的程序,将一些信息存储在学生身上,然后让我获取要打印的信息. 我的想法是这样的:我创建了一个名为“Aluno”的类,并实现了一系列方法来设置和获取我需要的信息,然后我将这个类作为参数传
我是C#的新手,我在尝试编写代码时遇到了一些问题.
我必须制作一个简单的程序,将一些信息存储在学生身上,然后让我获取要打印的信息. 我的想法是这样的:我创建了一个名为“Aluno”的类,并实现了一系列方法来设置和获取我需要的信息,然后我将这个类作为参数传递给Dictionary这样的东西: class Aluno { private int matricula; private string nomeCompleto; public int getMatricula() { return matricula; } public string getNomeCompleto() { return nomeCompleto; public void setMatricula(int m) { matricula = m; } public void setNomeCompleto(string nome) { nomeCompleto = nome; } 然后我在词典中使用它 Dictionary<int,object> principal = new Dictionary<int,object>(); Aluno a = new Aluno(); Console.WriteLine("Por favor informe a matricula:"); a.setMatricula(int.Parse(Console.ReadLine())); Console.WriteLine("Por favor informe o nome completo do aluno:"); a.setNomeCompleto(Console.ReadLine().ToUpper()); principal.Add(a.getMatricula(),a); 在此之后,我实现了一个类来打印存储在字典中的信息: class ImprimeListagem { public static void listagemSimples(Dictionary<int,object> origem) { int contador = 0; foreach (KeyValuePair<int,object> chave in origem) { Console.WriteLine(chave.Key+"|"+chave.Value); Console.ReadKey(); } } 当我使用Visual Studio在chave.value中“查看”时,所有存储的信息都存在,但我无法访问它.有人能帮我吗? class Program { static void Main(string[] args) { const int QTDE_ALUNO_PRINCIPAL = 1; const int QTDE_ALUNO_RESERVA = 1; int contadorAlunosPrincial = 0; int contadorAlunoReserva = 0; Dictionary<int,object>(); Queue<object> espera = new Queue<object>(); Aluno a = new Aluno(); int opcao = 0; do { ImprimeMenu.imprimirMenuPrincipal(); opcao = int.Parse(Console.ReadLine()); switch (opcao) { case 1: if (contadorAlunosPrincial < QTDE_ALUNO_PRINCIPAL) { Console.Clear(); Console.WriteLine("Por favor informe a matricula:"); a.setMatricula(int.Parse(Console.ReadLine())); Console.WriteLine("Por favor informe o nome completo do aluno:"); a.setNomeCompleto(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o nome da m?e:"); a.setNomeDaMae(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o nome do pai:"); a.setNomeDoPai(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o país"); a.setEnderecoPais(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o estado:"); a.setEnderecoEstado(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe a rua e o numero"); a.setEnderecoRuaNumero(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o cep"); a.setEnderecoCep(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o telefone para contato:"); a.setTelefoneContato(Console.ReadLine().ToUpper()); principal.Add(a.getMatricula(),a); contadorAlunosPrincial++; } else if (contadorAlunoReserva < QTDE_ALUNO_RESERVA) { Console.Clear(); Console.WriteLine("Por favor informe a matricula:"); a.setMatricula(int.Parse(Console.ReadLine())); Console.WriteLine("Por favor informe o nome completo do aluno:"); a.setNomeCompleto(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o nome da m?e:"); a.setNomeDaMae(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o nome do pai:"); a.setNomeDoPai(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o país"); a.setEnderecoPais(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o estado:"); a.setEnderecoEstado(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe a cidade:"); a.setEnderecoCidade(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o bairro:"); a.setEnderecoBairro(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe a rua e o numero"); a.setEnderecoRuaNumero(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o cep"); a.setEnderecoCep(Console.ReadLine().ToUpper()); Console.WriteLine("Por favor informe o telefone para contato:"); a.setTelefoneContato(Console.ReadLine().ToUpper()); espera.Enqueue(a); contadorAlunoReserva++; } else Console.WriteLine("N?o há mais vagas para cadastro de Alunos!nTente novamente mais tarde."); break; case 2: ImprimeMenu.imprimirMenuSecundário(); opcao = int.Parse(Console.ReadLine()); switch (opcao) { case 1: ImprimeListagem.listagemSimples(principal); break; case 2: break; } break; } } while (opcao != 7); } class ImprimeMenu { public static void imprimirMenuPrincipal() { Console.Clear(); Console.WriteLine("Programa de cadastro de alunos! Escolha a op??o desejada.nn" + "1 – Cadastrar alunon" + "2 – Imprimir lista de alunosn" + "3 – Imprimir lista de esperan" + "4 – Pesquisar alunon" + "5 – Desistêncian" + "6 – Sorteion" + "7 – Sair"); } public static void imprimirMenuSecundário() { Console.Clear(); Console.WriteLine("2 – Imprimir lista de alunosnn" + "t1 – Listagem simplesn" + "t2 – Listagem completa"); } } class Aluno { public Aluno() { matricula = 0; nomeCompleto = null; nomeDaMae = null; nomeDoPai = null; enderecoPais = null; enderecoEstado = null; enderecoCidade = null; enderecoBairro = null; enderecoRuaNumero = null; enderecoCep = null; telefoneContato = null; } private int matricula; private string nomeCompleto; private string nomeDaMae; private string nomeDoPai; private string enderecoPais; private string enderecoEstado; private string enderecoCidade; private string enderecoBairro; private string enderecoRuaNumero; private string enderecoCep; private string telefoneContato; public void setMatricula(int m) { matricula = m; } public void setNomeCompleto(string nome) { nomeCompleto = nome; } public void setNomeDaMae(string nomeMae) { nomeDaMae = nomeMae; } public void setNomeDoPai(string nomePai) { nomeDoPai = nomePai; } public void setEnderecoPais(string pais) { enderecoPais = pais; } public void setEnderecoEstado(string estado) { enderecoEstado = estado; } public void setEnderecoCidade(string cidade) { enderecoCidade = cidade; } public void setEnderecoBairro(string bairro) { enderecoBairro = bairro; } public void setEnderecoRuaNumero(string ruaNumero) { enderecoRuaNumero = ruaNumero; } public void setEnderecoCep(string cep) { enderecoCep = cep; } public void setTelefoneContato(string telefone) { telefoneContato = telefone; } public int getMatricula() { return matricula; } public string getNomeCompleto() { return nomeCompleto; } public string getNomeDaMae() { return nomeDaMae; } public string getEnderecoPais() { return enderecoPais; } public string getEnderecoEstado() { return enderecoEstado; } public string getEnderecoCidade() { return enderecoCidade; } public string getEnderecoBairro() { return enderecoBairro; } public string getEnderecoRuaNumero() { return enderecoRuaNumero; } public string getEnderecoCep() { return enderecoCep; } public string getTelefoneContato() { return telefoneContato; } } class ImprimeListagem { public static void listagemSimples(Dictionary<int,object> origem) { foreach (KeyValuePair<int,object> chave in origem) { Console.WriteLine(chave.Key+"|"+chave.Value); Console.ReadKey(); } } } 提前谢谢,抱歉我的英语不好,这不是我的母语. :d 解决方法
看起来你想要:
Dictionary<int,Aluno> principal = new Dictionary<int,Aluno>(); 通常,当需要使用泛型类型的对象和参数时,极为罕见.在大多数情况下,您应该使用具体类型(或接口). 如果你真的发现自己有对象价值;而不是具体类型 – 您可以将其转换为您期望“值”的类型:MyType =(MyType)value;. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |