C # é uma linguagem de programação robusta e multifacetada desenvolvida pela Microsoft Corporation no ano 2000 como um competidor mortal do Java. É a mais popular e a linguagem de programação dominante quando se trata de desenvolvimento para web e de aplicativos de desktop.
Neste tutorial em C #, aprenderemos os seguintes conceitos.
- C # Basics
- Programação Orientada a Objetos
- Conceitos avançados de C #
- Perguntas da entrevista baseadas em C #
C # Basics
- Introdução à linguagem de programação C #
- Recursos da linguagem de programação C #
- Instalação
- Estrutura do programa C #
- Tipos de dados
- Variáveis
- Operadores
- rotações
- Condicional
- Cordas
- Arrays
- Coleções
- Estrutura
- Funções
Introdução à linguagem de programação C #
No início dos anos 90, Java era a linguagem de programação líder para desenvolvimento web, desenvolvimento de aplicativos de desktop e muitos outros campos. A Microsoft queria criar um concorrente com muitos recursos avançados que podem deixar o Java para trás.
Foi no ano de 2000, Anders Hejlsberg e sua equipe da Microsoft teve a ideia de C # popularmente chamado de C-Sharp. Esta iniciativa foi aprovada pela International Standards Organization (PRINCIPAL) e a European Computer Manufacturers Association (ECMA). e, finalmente, The C # entra no mundo do desenvolvimento de software.
Recursos da linguagem de programação C #
- Linguagem de programação orientada a objetos
A abordagem de Programação Orientada a Objetos é o que torna o C # afiado para ser a linguagem de programação mais amigável ao programador e fácil de desenvolver e manter.
- Linguagem de tipo seguro
O significado de Type-Safe é que o compilador terá acesso apenas ao local da memória que tem permissão para executar. Este recurso melhora a segurança do código a um nível exponencial.
- Interoperabilidade
O recurso de interoperabilidade torna o C # capaz o suficiente para fazer tudo o que é nativo do C ++ de uma forma mais eficiente que pode superar o próprio C ++.
- Biblioteca Rica
C # fornece acesso a vários números de bibliotecas embutidas que fornecem funcionalidades pré-programadas para diminuir o tempo gasto no processo de desenvolvimento.
- Escalável e atualizável
C # foi projetado para ser superior entre as outras linguagens de programação. Por isso, está sempre aberto a atualizações e se mantém altamente escalonável com seus recursos.
java mudar duplo para int
- Orientado a componentes
Os desenvolvedores da Microsoft usaram a abordagem baseada em componentes para desenvolver C #. Esta é a metodologia de desenvolvimento predominante para manter o C # altamente escalonável e atualizado.
- Linguagem Estruturada
A abordagem de Programação Estruturada é preferida durante o ciclo de vida de desenvolvimento de software, pois se torna fácil desenvolver, compilar e implantar o software em comparação com a abordagem de programação orientada a procedimentos.
- Rápido
A programação em C # é mais rápida na compilação e execução em comparação com C ++ e outras linguagens de programação.
Instalação
Está provado que Microsoft Visual Studio é o melhor Editor da classe para Programação C #. Iremos instalar e configurar o Microsoft Visual Studio para executar nossos programas C # seguindo as etapas mencionadas abaixo:
Passo 1 : Baixe o Microsoft Visual Studio
Google para o versão mais recente do Visual Studio e baixe o instalar arquivo em seu sistema local e então corre o arquivo do instalador como um administrador.
Etapa 2: Selecione o pacote de desenvolvimento de desktop .NET
Depois de executar o Instalador, o Editor do Visual Studio será baixado com sucesso em seu sistema local. Mais tarde, uma caixa de diálogo será exibida na tela do seu desktop perguntando ao inimigo um pacote particular você precisa em seu sistema. Aqui, você precisa selecionar o Desenvolvimento de desktop .NET pacote.
Etapa 3: definir o ambiente C #
Uma vez que seus pacotes para Desenvolvimento .NET são baixados, em seguida, outra caixa de diálogo será exibida na tela perguntando sobre o ambiente de desenvolvimento que você está procurando. Aqui, você precisa selecione o ambiente para C #.
Etapa 4: Crie seu primeiro projeto
Assim que o ambiente estiver configurado, você estará pronto para prosseguir. Inicie seu Visual Studio e selecione criar novo projeto opção na caixa de diálogo exibida.
Você será redirecionado para a próxima caixa de diálogo e lá você precisa selecionar a biblioteca de classes como .NET Standard como mostrado abaixo.
Na próxima caixa de diálogo, você será solicitado a Configure seu projeto . Configure-o e agora você está no Editor. Escreva seu primeiro programa e corre isto. A saída será exibida com sucesso no Prompt de comando.
usando a classe de sistema Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}
//Resultado:
Vamos executar nosso primeiro programa C #.
Estrutura do programa C #
Agora que executamos nosso primeiro programa C #, vamos entender sua estrutura em detalhes. Um programa C # simples possui as seguintes partes.
usando o namespace do sistema ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}
//Resultado:
Bem-vindo ao Edureka !, Happy Learning ..!
- classe: classe pode ser geralmente definida como um palavra chave que é usado para definir uma classe no programa C #.
- Edureka: É o nome do Classe. A classe é freqüentemente considerada como um projeto que armazena os membros e métodos relacionados à classe.
- A Principal: Basicamente é o método primário de todo o Programa C #, atua como a porta de entrada do controle para entrar no programa. Ele é executado antes que qualquer outro método do programa seja executado.
- vazio: Este segmento do código é designado ao tipo de retorno do método. Pode ser qualquer tipo de dados diferente de nulo. Vazio significa que o método não possui nenhum dado sendo retornado dele.
- estático: Isto é um palavra chave que diz que os membros de dados declarados são estáticos e uma memória dedicada foi alocada para os membros declarados.
- String [] args: Assemelha-se aos argumentos da linha de comando que usamos em nosso programa. Enquanto executamos nosso programa, basicamente passamos alguns argumentos, que será aceito pelo programa devido a esta declaração.
- System.Console.WriteLine (“Bem-vindo ao Edureka !, Happy Learning ..!”) Aqui, Sistema é o namespace. O consoleé essa a categoria delineadano namespace do sistema. o WriteLine () é esse oestáticotécnicado consolecategoria que é empregada para escrevero texto no console.
Agora, vamos aprender os tipos de dados disponíveis em C #.
Tipos de dados
Os tipos de dados em C # são divididos em três categorias descritas a seguir.
Tipos de dados de valor
o Tipos de dados de valor estão localizados no System.ValueType Biblioteca e estão sempre prontos para serem acessados diretamente e as variáveis podem ser atribuídas diretamente a um determinado valor. Os tipos de dados de valor são classificados em dois tipos, conforme mostrado abaixo:
- Tipos de dados predefinidos
- Tipos de dados definidos pelo usuário
Tipos de dados predefinidos: Estes são os que normalmente usamos na nossa programação do dia a dia. Esses tipos de dados são predefinidos pelos desenvolvedores de linguagem e são mantidos prontos para uso pelos programadores.
Exemplo:
int, float, char, short double, etc.
Tipos de dados definidos pelo usuário: Existem situações em que podemos precisar armazenar valores diferentes de tipos de dados em uma única variável. Nestes casos, o Tipos de dados predefinidos não são apenas o suficiente. Usuário definido Os tipos de dados são como tipos de dados personalizáveis para o usuário.
Exemplo: Estrutura, Enum
Tipo de dados | Alcance da memória alocada | Tamanho da memória |
char assinado | -128 a 127 | 1 byte |
caracter não identifcado | 0 a 127 | 1 byte |
Caracteres | -128 a 127 | 1 byte |
curto assinado | -32.768 a 32.767 | 2 bytes |
curto sem sinal | 0 a 65.535 | 2 bytes |
curto | -32.768 a 32.767 | 2 bytes |
int assinado | -2.147.483.648 a -2.147.483.647 | 4 bytes |
int sem sinal | 0 a 4.294.967.295 | 4 bytes |
int | -2.147.483.648 a -2.147.483.647 | 4 bytes |
assinado por muito tempo | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | 8 bytes |
longo sem sinal | 0 a 18.446.744.073.709.551.615 | 8 bytes |
longo | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | 8 bytes |
flutuador | 1,5 * 10-45 - 3,4 * 1038, (precisão de 7 dígitos) | 4 bytes |
em dobro | 5,0 * 10-324 - 1,7 * 10308, (precisão de 15 dígitos) | 8 bytes |
decimal | -7,9 * 10-28 - 7,9 * 1028, (precisão de 28 dígitos) | 16 bytes |
Tipo de dados do ponteiro
Tipo de ponteiro é um tipo de dados simples. Sua funcionalidade é completamente semelhante aos ponteiros em C. Eles são projetados para armazenar o endereço de outro ponteiro.
float * ptr
Tipos de dados de referência
O nome é autoexplicativo. o Tipos de dados de referência na verdade, não armazenam as variáveis; em vez disso, eles armazenam o valor de referência para aquela variável específica. Em outras palavras, eles armazenam o endereço da variável real.
As Variáveis de Referência são classificadas em três tipos diferentes, conforme mencionado abaixo:
- Tipo de objeto
O tipo de dados do objeto está disponível no System.Object Classe.O objetotipospode seratribuído aovalores deos outros tipos,referênciatipos, predefinido, definido pelo usuáriotipos. Mas depoistarefavalores, requer tipo conversão.
objeto abc abc = 50 // isso é chamado de boxe
- Tipo Dinâmico
Variáveis de tipo dinâmico são projetadas para armazenar quase todos os tipos de valores. É chamado de Tipo Dinâmico porque a verificação de tipo dos valores ocorre em tempo de execução
dinâmico x = 10
- Tipo de corda
O tipo de string está disponível em System.String classe. O tipo de string é projetado para armazenar literais de string. Os literais de string são armazenados em duas formas emduas formas
- citado
- @quoted.
String S = 'Edureka'
- o @quoted literal de string parece
@ 'Edureka'
Agora vamos entender as variáveis.
Variáveis
Variáveis são os nomes atribuídos à localização da memória que armazenam certos dados fornecidos pelo usuário e esses dados são facilmente acessíveis usando o nome da variável. Existem cinco tipos de variáveis disponíveis em C #
Tipo | Exemplo |
Nulo | Dados nulos |
boleano | Verdadeiro e falso |
Inteiro | Int, Char, Byte, Curto, Longo |
Flutuador | Float e Double |
Decimal | Decimal |
Exemplo:
int a, b double x float p char abc
Regras a serem seguidas para declarar variáveis em C #
- Uma variável pode incluir alfabetos, dígitos e sublinhados.
- O nome de uma variável só pode começar com um alfabeto ou sublinhado.
- As variáveis não podem começar com um dígito ou caractere especial.
- Espaços em branco não são permitidos entre o nome da variável.
- Palavras-chave reservadas não podem ser usadas como nomes de variáveis.
Operadores
Um Operador pode ser definido como um símbolo especial que explica o computador para executar uma determinada Matemática é uma Operação Lógica sobre um conjunto de variáveis. C # inclui uma variedade de Operadores mencionados abaixo.
- Operadores aritméticos
- Operadores Relacionais
- Operadores lógicos
- Operadores bit a bit
- Operadores de atribuição
Operadores aritméticos
Operador | Exemplo | Descrição |
+ | A + B | Adiciona dois operandos |
- | A - B | Subtrai dois operandos |
* | A * B | Múltiplos dois operandos |
/ | A / B | Divide dois operandos |
% | A% B | O restante dos dois operandos |
++ | A ++ | Operação de incremento |
- | PARA- | Operação de redução |
Operadores Relacionais
Operador | Exemplo | Descrição |
== | A == B | Verdadeiro, se ambos os operandos forem iguais, Senão False |
! = | A! = B | Verdadeiro, se ambos os operandos não forem iguais, Senão False |
> | A> B | Verdadeiro, se A for Maior, Caso contrário, será falso |
< | PARA | Verdadeiro, se B for maior, senão falso |
> = | A> = B | Verdadeiro, se A for maior ou igual, senão falso |
<= | PARA<= B | Verdadeiro, id B é maior igual, caso contrário, falso |
Operadores lógicos
Operador | Exemplo | Descrição |
&& | A && B | Verdadeiro, se ambos os operandos forem verdadeiros, caso contrário, será falso |
|| | A || B | Verdadeiro, se um dos operandos for verdadeiro, senão False |
! | UMA ! B | Reverte o estado lógico do operando |
Operadores bit a bit
PARA | B | A e B | A | B | A ^ B |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
Operador | Exemplo | Descrição |
~ | (~ A) | O operador de complemento do binário é unário e tem o efeito de 'virar' bits. |
<< | PARA<<2 | Operador binário de deslocamento à esquerda. O valor dos operandos à esquerda é movido para a esquerda pelo número de bits especificado pelo operando à direita. |
>> | A >> 2 | Operador binário de deslocamento à direita. O valor dos operandos à esquerda é movido para a direita pelo número de bits especificado pelo operando à direita. |
Operadores de atribuição
Operador | Exemplo | Descrição |
= | A = B + C | A = B + C, B + C é atribuído a A |
+ = | A + = B | A = A + B, A + B é atribuído a A |
- = | A - = B | A = A-B, A-B é atribuído a A |
* = | A - = B | A = A * B, A * B é atribuído a A |
/ = | A / = B | A = A / B, A / B é atribuído a A |
% = | A% = B | A = A% B, A% B é atribuído a A |
<<= | PARA<<= 2 | Shift à esquerda e operador de atribuição |
>> = | A >> = 2 | Operador de mudança e atribuição à direita |
& = | A & = 2 | Operador bit a bit e atribuição |
^ = | A ^ = 2 | Operador de atribuição e exclusivo bit a bit |
| = | A! = 2 | Operador Bitwise Inclusive e Atribuição |
rotações
PARA ciclo instrução é usada para executar um bloco de instruções repetidamente até que uma condição particular seja satisfeita. A linguagem C # consiste nas seguintes instruções de loop.
- For Loop
- While Loop
- Loop Do While
For Loop
o para loop é usado para executar um segmento de código específico várias vezes até que a condição fornecida seja satisfeita.
Sintaxe
para (incremento / decremento da condição de inicialização) {// segmento de código}
FlowChart:
Exemplo:
usando System public class ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } }
//Resultado:
1
2
3
4
5
While Loop
o Loop while é usado para executar um segmento de código várias vezes até que uma condição específica seja satisfeita.
Sintaxe
while (condição) {// código a ser executado}
FlowChart:
Exemplo:
usando Loops de namespace do sistema {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } }
//Resultado:
O valor de a: 5
O valor de a: 6
O valor de a: 7
O valor de a: 8
O valor de a: 9
O valor de a: 10
Loop Do While
O loop do while é completamente semelhante ao loop While, mas a única diferença é que a condição é colocada no final do loop. Portanto, o loop é executado pelo menos uma vez.
Sintaxe
faça {// código a ser executado} enquanto (condição)
FlowChart:
Exemplo:
using System namespace Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} ', n, i, produto) i ++} enquanto (i<= 10) } } }
//Resultado:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
Condicional
Declarações condicionais são usados para executar declaração ou grupo de afirmações com base em alguma condição. Se o doença é verdade então Declarações C # são executados caso contrário o próximo declaração será executado.
Os diferentes tipos de declarações condicionais na linguagem C ++ são os seguintes:
- Declaração If
- Declaração If-Else
- Instrução If-else aninhada
- If-Else If ladder
- Declaração de mudança
Declaração If
O solteiro E se declaração na linguagem C # é usada para executar o código se uma condição for verdadeira. Também é chamado de instrução de seleção unilateral.
Sintaxe
if (boolean-expression) {// instruções executadas se boolean-expression for true}
FlowChart:
Exemplo:
usando o namespace do sistema Condicional {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } }
//Resultado:
2 é menor que 5
Esta instrução é sempre executada.
Declaração If-Else
o if-else declaração na linguagem C é usada para executar o código se a condição for verdadeira ou falsa. Também é chamado de instrução de seleção bidirecional.
Sintaxe
if (boolean-expression) {// instruções executadas se boolean-expression for true} else {// instruções executadas se boolean-expression for false}
FlowChart:
Exemplo:
usando o namespace do sistema Condicional {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } }
//Resultado:
12 é maior ou igual a 5
Esta instrução é sempre executada.
Instrução If-else aninhada
O aninhado if-else declaração é usada quando um programa requer mais de uma expressão de teste. Também é chamado de instrução de seleção de várias vias. Quando uma série de decisões está envolvida em uma declaração, usamos if-else declaração na forma aninhada.
Sintaxe
if (boolean-expression) {if (nested-expression-1) {// código a ser executado} else {// código a ser executado}} else {if (nested-expression-2) {// código a ser executado } else {// código a ser executado}}
FlowChart:
Exemplo:
usando o namespace do sistema Condicional {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first//Resultado:
13 é o maior
Else-if Ladder
o if-else-if declaração é usada para executar um código de várias condições. Também é chamada de instrução de decisão de múltiplos caminhos. É uma cadeia de instruções if..else em que cada instrução if está associada à instrução else if e a última seria uma instrução else.
Sintaxe
if (condição1) {// código a ser executado se a condição1 for verdadeira} else if (condição2) {// código a ser executado se a condição2 for verdadeira} else if (condição3) {// código a ser executado se a condição3 for verdadeira} ... else {// código a ser executado se todas as condições forem falsas}FlowChart:
Exemplo:
usando a classe de sistema Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i é 10') else if (i == 15) Console.WriteLine (' i é 15 ') else if (i == 20) Console.WriteLine (' i é 20 ') else Console.WriteLine (' i não está presente ')}}//Resultado:
eu tenho 20
Declaração de mudança
Interruptor declaração atua como um substituto para uma longa escada if-else-if que é usada para testar uma lista de casos. Uma instrução switch contém um ou mais rótulos case que são testados em relação à expressão switch. Quando a expressão corresponder a um caso, as instruções associadas a esse caso serão executadas.
Sintaxe
switch (variável / expressão) {case value1: // Instruções executadas if expression (or variable) = value1 break case value2: // Instruções executadas if expression (or variable) = value1 break ... ... ... .. . ... ... default: // Instruções executadas se nenhum caso corresponder}FlowChart:
Exemplo:
usando o namespace do sistema Condicional {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Digite um alfabeto') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') break case 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a vowel') break}}}}//Resultado:
Digite um alfabeto
é
Vogal
Cordas
Corda Datatype é membro de System.String Classe. É capaz de armazenar dados de tipo de caractere. Podemos realizar várias operações em Stings, comoconcatenação, comparação, obtenção de substring, pesquisa, corte, substituição e muito mais.
A analogia de corda e corda
Em C # Corda e corda são equivalentes. A palavra string é um palavra chave e atua como o System.String classe. Podemos usar qualquer uma das versões para declarar strings.
Sintaxe:
string s1 = 'Edureka' // criando string usando a palavra-chave string String s2 = 'Boa aprendizagem' // criando string usando a classe StringExemplo:
usando System public class StringExample {public static void Main (string [] args) {string s1 = 'Edureka' char [] ch = {'C', 's', 'h', 'a', 'r', ' p ',' ',' T ',' u ',' t ',' o ',' r ',' i ',' a ',' l '} string s2 = nova string (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}//Resultado:
Edureka
Tutorial Csharp
Métodos de string em C #
Método Descrição Clone() Usado para retornar uma referência a esta instância de String. Comparar (string, string) Usado para comparar dois objetos String especificados. Concat (string, string) Concatene duas instâncias especificadas de String. Contém (String) Retorna um valor indicando uma substring especificada Copiar (String) Usado para criar uma nova instância de String com o mesmo valor CopyTo (Int, Char [], Int, Int) Copia caracteres de uma posição especificada Equals (String, String) Determina que dois objetos String têm o mesmo valor. Formato (string, objeto) Substitua um ou mais itens de formato em uma string especificada IndexOf (String) Informa o índice baseado em zero da primeira ocorrência Insert (Int32, String) Retorna uma nova string na qual uma string é inserida em um índice. IsInterned (String) Indica que esta string está na forma C. de normalização Unicode. IsNullOrEmpty (String) Indica que a string especificada é nula ou vazia. IsNullOrWhiteSpace (String) Usado para indicar se uma string especificada é nula, vazia, Join (String, String []) Usado para concatenar todos os elementos de uma matriz de string LastIndexOf (Char) Informa a posição do índice baseado em zero do último caractere LastIndexOfAny (Char []) Informa a posição do índice baseado em zero do último caractere Remover (Int32) Retorna uma nova string em que todos os caracteres Substituir (string, string) Retorna uma nova string em que todas as ocorrências de uma string Dividir (Char []) É usado para dividir uma string em substrings StartsWith (String) É usado para verificar se o início desta string Substring (Int32) Ele é usado para recuperar uma substring desta instância. ToCharArray () Copia os caracteres nesta instância para uma matriz Unicode. Para sequenciar() É usado para retornar a instância de String. Aparar() Apara a corda
ArraysSemelhante a outras linguagens de programação, C # possui matrizes. Matrizes são estruturas de dados simples projetadas para armazenar o mesmo tipo de dados de elementos em um local de memória contíguo.
C # oferece suporte aos seguintes tipos de Array.
- Matriz unidimensional
- Matriz Multidimensional
- Matriz Jagged
Matriz unidimensional
O array de dimensão única armazena elementos na forma de uma única linha.
Sintaxe
int [] arr = new int [5] // criando matrizExemplo:
usando System public class ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 para (int i = 0 i//Resultado:
10
vinte
30
40
cinquenta
Matriz Multidimensional
Array multidimensional armazena elementos na forma de dimensões múltiplas, como uma matriz e um cubo, etc.
Sintaxe
int val = a [2,3]Exemplo:
usando o namespace do sistema ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j para (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } }//Resultado:
a [0,0] = 0
a [0,1] = 0
a [1,0] = 1
a [1,1] = 2
a [2,0] = 2
a [2,1] = 4
a [3,0] = 3
a [3,1] = 6
a [4,0] = 4
a [4,1] = 8
Matriz Jagged
Jagged Array é simplesmente um array de arrays.
Exemplo:
usando o namespace do sistema ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, novo int [] {2,4}, novo int [] {3, 6}, novo int [] {4, 8}} int i, j para (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } }//Resultado:
a [0] [0] = 0
a [0] [1] = 0
a [1] [0] = 1
a [1] [1] = 2
a [2] [0] = 2
a [2] [1] = 4
a [3] [0] = 3
a [3] [1] = 6
a [4] [0] = 4
a [4] [1] = 8
Coleções
A coleção pode ser considerada simplesmente como um grupo de objetos coletados em conjunto de modo a aplicar algumas funções aos dados coletados. As operações que uma vez que ca possivelmente executam em uma coleção são,
- objeto de loja
- atualizar objeto
- deletar objeto
- recuperar objeto
- objeto de pesquisa, e
- classificar objeto
Tipos de coleções
Existem três possibilidades diferentes de trabalhar com coleções. Os três namespaces são mencionados abaixo:
- System.Collections.Generic Aulas
- System.Collections Aulas
- System.Collections.Concurrent Aulas
A classe System.Collections.Generic tem as seguintes variedades de classes:
- Lista
- Pilha
- Fila
- LinkedList
- HashSet
- SortedSet
- Dicionário
- SortedDictionary
- SortedList
o System.Collections as classes são consideradas classes legadas. eles incluem as seguintes classes.
- ArrayList
- Pilha
- Fila
- Hashtable
o System.Collections.Concurrent Aulaso namespace fornece classes para operações thread-safe. Agora, vários threads não criarão um problema para acessar os itens da coleção. as classes disponíveis neste são,
- BlockingCollection
- ConcurrentBag
- ConcurrentStack
- ConcurrentQueue
- ConcurrentDictionary
- Partições
- Partições
- OrderablePartitioner
Lista
o Lista é considerada uma estrutura de dados disponível em System.Collection.Generics namespace. Ele pode armazenar e buscar elementos. A lista é capaz de armazenar elementos duplicados.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') nomes.Adicionar ('Kiran') foreach (nome var nos nomes) {Console.WriteLine (nome)}}}//Resultado:
Sandhya
Uma corrida
Prasanthe
Kiran
Conjunto de hash
C # HashSetcategoria é frequentemente acostumadaloja,Leve emboraouler componentes. istonãoloja duplicadacomponentes.é urgenteusar HashSet categoriaE sevocê temarmazenarunicamente distintivo componentes . Está encontrado no namespace System.Collections.Generic.
Exemplo:
usando System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') names.Add ('Imran') names.Add ('karan') foreach (var name in names) {Console.WriteLine (name)}}}//Resultado:
Sunil
Amar
Pujari
Imran
karan
Conjunto Ordenado
C # SortedSetclasse estão frequentemente acostumadosloja, remover ou ler elementos . Ele mantém a ordem crescente enãoloja duplicadaelementos.é rápidousar SortedSetcategoriaE sevocê temarmazenar distintivo componentes e manter a ordem crescente.Estáencontrado no namespace System.Collections.Generic.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') names.Add ('Ravi') names.Add ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}//Resultado:
Anuradha
Kajol
Praveen
Ravi
Sanjay
Pilha
o pilha é uma coleção simples que segue BEIRA ou procedimento de primeiro a entrar, último a sair durante o processamento dos elementos armazenados nele.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') names.Push ('Rajesh') names.Push ('kumar') foreach (string name in names) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('Depois de Pop, elemento Peek:' + names.Peek ())}}//Resultado:
Kumar
Rajesh
James
Pooja
Chandan
Elemento Peek: kumar
Pop: kumar
Depois de Pop, elemento Peek: Rajesh
Fila
A fila é completamente semelhante à Pilha, mas a única diferença é que a Fila segue FIFO ou princípio do primeiro a entrar e primeiro a sair durante o processamento dos elementos nele armazenados.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') names.Enqueue ('Raju') names.Enqueue ('Hari') foreach (string name in names) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Retirar da fila:' + names.Dequeue ()) Console.WriteLine ('Após retirar da fila, Peek elemento:' + names.Peek ())}}//Resultado:
Srujan
Prajat
John
Feroz
Dia
Elemento Peek: Srujan
Retirar da fila: Srujan
Depois de Dequeue, elemento Peek: Prajat
Lista Ligada
A lista vinculada é uma coleção de memória dinâmica. Os elementos na lista vinculada são armazenados acessando a memória do heap e armazenando os elementos em uma ordem contínua vinculando seus endereços.
Exemplo:
usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}//Resultado:
sai
Limites
Uma corrida
Prakash
gaio
Dicionário
Dicionário categoriausa oidéiada tabela de hash. Ele armazena valores ema premissada chave. Contémdistintivochavesunicamente. Dea ajudade chave,nós iremos simplesmentepesquisar outirar elementos.Estáencontrado no namespace System.Collections.Generic.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') nomes.Adicionar ('3', 'Preetam') nomes.Adicionar ('4', 'Roy') nomes.Adicionar ('5', 'Akash') foreach (KeyValuePair kv em nomes) {Console. WriteLine (kv.Key + '' + kv.Value)}}}//Resultado:
1 Shiva
2 Prasad
3 Preetam
4 Roy
5
Akash
Dicionário Ordenado
o SortedDictionary categoriausa oProjetoda tabela de hash. Ele armazena valores ema ideiada chave. Contémdistintivochaves e mantém a ordem crescente ema ideiada chave. Dea ajudade chave,nós iremos simplesmentepesquisar outirar elementos.Estáencontrado no namespace System.Collections.Generic.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') nomes.Adicionar ('5', 'Ramesh') nomes.Adicionar ('3', 'Vidya') nomes.Adicionar ('2', 'Pallavi') foreach (KeyValuePair kv em nomes) {Console. WriteLine (kv.Key + '' + kv.Value)}}}//Resultado:
1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash
Lista Classificada
o SortedList éamatriz de pares chave / valor. Ele armazena valores ema premissada chave. SortedListcategoriacontémdistintivochaves e mantém a ordem crescente ema premissada chave. Dea ajudade chave,somos capazes de simplesmentepesquisar ou removerelementos.Estáencontrado em System.Collections.Generic namespace.
Exemplo:
using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') nomes.Adicionar ('5', 'Ramesh') nomes.Adicionar ('3', 'Vidya') nomes.Adicionar ('2', 'Pallavi') foreach (KeyValuePair kv em nomes) {Console. WriteLine (kv.Key + '' + kv.Value)}}}//Resultado:
1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh
Estrutura
A estrutura é um tipo de dados definido pelo usuário projetado para armazenar vários elementos de diferentes tipos de dados. A estrutura é declarada usando a palavra-chave struct.
Exemplo:
usando a estrutura do sistema Livros {título da string pública autor da string pública assunto público int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'Programação C #' Book1.author = ' Ramchandra Kumar 'Book1.subject =' Tutorial de programação C ++ 'Book1.book_id = 95908978 Book2.title =' Faturamento de telecomunicações 'Book2.author =' Karan 'Book2.subject =' Tutorial de faturamento de telecomunicações 'Book2.book_id = 18674900 Console.WriteLine ( 'Book 1 title: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 subject: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Book 2 subject: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}//Resultado:
Título do livro 1: Programação C #
Autor do livro 1: Ramchandra Kumar
Livro 1 assunto: Tutorial de programação C ++
Livro 1 book_id: 95908978
Título do livro 2: Faturamento de telecomunicações
Autor do livro 2: Karan
Livro 2 assunto: Tutorial de faturamento de telecomunicações
Livro 2 book_id: 18674900
Funções
A função é definida como um bloco de código do código principal. A função é usada para executar instruções especificadas no bloco de código. Uma função consiste nos seguintes componentes.
- Nome da função: É um nome distinto usado para fazer uma chamada de função.
- Tipo de retorno: Ele especifica o tipo de dados do valor de retorno da função.
- Corpo: Ele contém instruções executáveis.
- Especificador de acesso: Ele especifica a acessibilidade da função no aplicativo.
- Parâmetros: É uma lista de argumentos que podemos passar para a função durante a chamada.
Sintaxe
FunctionName () {// corpo da função // declaração de retorno}Exemplo:
usando o namespace System FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') mensagem de retorno} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('To Edureka') Console.WriteLine ('Welcome' + mensagem)}}}//Resultado:
Função Mostrar Dentro
Bem vindo a edureka
As funções podem ser executadas de 3 maneiras diferentes:
- Chamada por valor
- Chamada por Referência
- Parâmetro de Saída
Chamada por valor
Em C #, valor -tipo parametrosestáaquele passeuma réplicado valor original para ofunção em vez dereferência. istonãomodificaro primeiro valor. Aemenda criadapassouvalor nãoErao valor particular.dentro doseguinte exemplo,nós temospassarvalor por toda partealigar.
Exemplo:
using System namespace CallByValue {class Edureka {public void Mostrar (int val) {val * = val Console.WriteLine ('O valor dentro da função show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Valor antes de chamar a função' + val) program.Show (val) Console.WriteLine ('Valor após chamar a função' + val)}}}//Resultado:
Valor antes de chamar a função 50
O valor dentro da função show 2500
Valor após chamar a função 50
Chamada por Referência
No método Call by Reference,para ref palavra-chave para passar o argumento como tipo de referência. Ele passa a referência de argumentos para a função em vez de uma cópia do valor original. As mudanças nos valores passados são permanentes e modificar o valor da variável original.
Exemplo:
using System namespace CallByReference {class Edureka {public void Mostrar (ref int val) {val * = val Console.WriteLine ('O valor dentro da função show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Valor antes de chamar a função' + val) program.Show (ref val) Console.WriteLine ('Valor após chamar a função' + val)}}}//Resultado:
Valor antes de chamar a função 50
O valor dentro da função show 2500
Valor após chamar a função 2500
Parâmetro de Saída
O parâmetro de saídafornece Fora palavra-chave para passar argumentos como tipo de saída. É como o tipo de referência, exceto que não exige que a variável seja inicializada antes de passar. Devemos usar Fora palavra-chave para passar o argumento como tipo de saída. É útil quando queremos que uma função retorne vários valores.
Exemplo:
using System namespace OutParameter {class Edureka {public void Mostrar (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Valor antes de passar a variável' + val) program.Show (out val) Console.WriteLine ('Valor depois de receber a variável out' + val)}}}//Resultado:
Valor antes de passar a variável 50
Valor
depois de receber a variável de saída 25
Agora vamos passar para a programação orientada a objetos
Programação Orientada a Objetos
Programação orientada a objetos Sistemaé um paradigma de programação baseado no conceito de objetos que contém membros de dados e métodos relacionado a eles. O objetivo principal da programação orientada a objetos é aumentar a flexibilidade e manutenção dos programas
Recursos da programação orientada a objetos:
- Ele enfatiza mais os dados do que o procedimento.
- Os programas estão divididos em objetos, facilitando o seu trabalho.
- As estruturas de dados são projetadas de forma a caracterizar os objetos.
- Funções que funcionam emos dados de um objeto são colocados juntos na estrutura de dados.
- Os dados estão ocultos e não podem ser acessados por funções externas sem permissão.
- A comunicação entre objetos pode ocorrer com a ajuda de funções.
- Adicionar novos dados e funções tornou-se fácil.
- Segue a abordagem ascendente no desenho do programa.
Os Paradigmas Orientados a Objetos em C # são os seguintes
- Enumeração em C #
- Abordagem de programação orientada a objetos
- Sobrecarregando e Substituindo
- Namespace
- Operações de arquivo
- Eventos
- Genéricos
- Delegados
- Reflexão
Enumeração em C #
Enum ou também chamado de enumeração em C # é usado para armazenar valores constantes sem ter que alterá-los durante toda a execução de um programa C #. istoé usado para armazenar um conjunto de constantes nomeadas, como estação, dias, mês, tamanho, etc.
Exemplo:
using System public class EnumExample {public enum week {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}//Resultado:
Segunda-feira = 0
Sexta = 4
Abordagem de programação orientada a objetos
O estilo de programação orientado a objetos pode ser alcançado seguindo os métodos prescritos abaixo.
Encapsulamento
Encapsulamento é um método para combinar o métodos junto com seu membros de dados.
Exemplo:
using System namespace Edureka {class Rectangle {public double comprimento public double largura public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Largura: {0} ', largura) Console.WriteLine (' Área: {0} ', GetArea ())}} classe ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}//Resultado:
Comprimento: 50
Largura: 35
Área: 1750
Abstração
Abstração é um método para ocultar a parte de codificação complexa do usuário, fornecendo-lhe apenas as informações necessárias de que ele precisa.
Exemplo:
using System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('drawing circle ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}//Resultado:
desenhando retângulo ...
desenhando círculo ...
Interface
o interface é completamente semelhante ao Abstraction. A funcionalidade de uma interface é ocultar os dados sem importância do usuário e fornecer-lhe os únicos dados importantes de que precisa.
Exemplo:
usando a interface pública do sistema Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('drawing circle ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}//Resultado:
desenhando retângulo ...
desenhando círculo ...
Polimorfismo
Polimorfismoé a combinação de 'poli' + “Se transforma” o que significa muitas formas. É uma palavra grega. Isso significa que o segmento de código pode assumir várias formas. Temos dois tipos de polimorfismo.
- Polimorfismo de tempo de compilação
- Polimorfismo de tempo de execução
Exemplo:
usando System public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}//Resultado:
branco
Herança
Herança é um processo no qual um objeto adquire todas as propriedades e comportamentos de seu objeto pai automaticamente. Você pode reutilizar, estender ou modificar os atributos e comportamentos definidos em outra classe. a classe que herda os membros de outra classe é chamada classe derivada e a classe cujos membros são herdados é chamada de base classe. A classe derivada é a classe especializada para a classe base.
Exemplo para herança de nível único
using System namespace RectangleApplication {class Rectangle {comprimento duplo protegido protegido largura dupla público Retângulo (duplo l, duplo w) {comprimento = l largura = w} público duplo GetArea () {retorno comprimento * largura} public void Display () {Console. WriteLine ('Comprimento: {0}', comprimento) Console.WriteLine ('Largura: {0}', largura) Console.WriteLine ('Área: {0}', GetArea ())}} classe Mesa: Retângulo {privado double cost public Tabletop (double l, double w): base (l, w) {} public double GetCost () {double cost = GetArea () * 70 return cost} public void Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}//Resultado:
Comprimento: 4,5
Largura: 7,5
Área: 33,75
Custo: 2362,5
Exemplo de herança multinível
using System namespace InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} interface pública PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Área total: {0}', Rect.getArea ()) Console.WriteLine ('Total custo de pintura: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}//Resultado:
Área total: 35
Custo total da pintura: $ 2.450
Sobrecarregando
Sobrecarga é uma situação em que temos dois ou membros declarados usando o mesmo nome. A sobrecarga também é possível quando declaramos dois ou mais métodos com o mesmo nome. Vamos verificar exemplos de ambos.
Sobrecarga de membros
Exemplo:
using System public class Edureka {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} public class TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}//Resultado:
35
60
Sobrecarga de método
Exemplo:
using System public class Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}//Resultado:
35
33.699997
Substituindo
Substituir é uma situação em que a classe filha define o mesmo método que o pai também está definindo. Vamos entender isso por meio de um pequeno exemplo.
Exemplo:
using System public class Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Substituindo {public static void Main () {Dog d = new Dog () d.eat ()}}//Resultado:
Comer comida
Namespace
o namespace é basicamente usado para lidar com várias classes presentes no programa. O namespace está disponível de diferentes maneiras.
- System.Console: Aqui o Sistema torna-se o namespace
- Para acessar a classe de um namespace, precisamos usar namespacename.classname.
- Podemos usar o usando palavra-chave também.
Exemplo:
using System using First using Second namespace Primeiro {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} namespace Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} public class Namespace {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}//Resultado:
Bem vindo a edureka
Aprendizagem feliz
Operações de arquivo
o operações de arquivo disponíveis em C # são os seguintes:
Operação Descrição BinaryReader Lê dados primitivos de um fluxo binário. BinaryWriter Grava dados primitivos em formato binário. BufferedStream Armazenamento temporário para um fluxo de bytes. Diretório Ajuda na manipulação de uma estrutura de diretório. DirectoryInfo Usado para executar operações em diretórios. DriveInfo Fornece informações para as unidades. Arquivo Ajuda na manipulação de arquivos. Informações do arquivo Usado para executar operações em arquivos. FileStream Usado para ler e gravar em qualquer local de um arquivo. MemoryStream Usado para acesso aleatório a dados transmitidos armazenados na memória. Caminho Executa operações nas informações do caminho. StreamReader Usado para ler caracteres de um fluxo de bytes. StreamWriter É usado para escrever caracteres em um fluxo. StringReader É usado para leitura de um buffer de string. StringWriter É usado para escrever em um buffer de string. FileMode
o FileMode é um enumerador que define vários métodos de abertura de arquivo. Os membros do FileMode Enumerator são descritos a seguir:
- Acrescentar: Ele abre um arquivo existente e coloca o cursor no final do arquivo ou cria o arquivo se o arquivo não existir.
- Crio: Ele foi projetado para criar um novo arquivo.
- Crie um novo: Ele é projetado para especificar ao sistema operacional que deve criar um novo arquivo.
- Abrir: Ele é projetado para abrir um arquivo existente.
- OpenOrCreate: Ele é projetado para especificar o sistema operacional que deve abrir um arquivo se ele existir, caso contrário, deve criar um novo arquivo.
- Truncar: Truncar abre um arquivo existente e trunca seu tamanho para zero bytes.
FileAccess
FileAccess Enumerator é usado para obter acesso a um arquivo específico. Tem os seguintes membros.
- Ler
- Escrever
- Ler escrever
Compartilhamento de arquivo
o Compartilhamento de arquivo Enumerator é usado para compartilhar um arquivo específico. Tem os seguintes membros.
- Herdável: Inheritable permite que um filehandle passe uma herança para os processos filho.
- Nenhum: Nenhum recusa o compartilhamento do arquivo atual
- Ler: Ler permite abrir o arquivo para leitura.
- Ler escrever: ReadWrite permite abrir o arquivo para leitura e escrita.
- Escrever: A gravação permite abrir o arquivo para gravação.
Eventos
Um evento é geralmente conhecido como uma ação gerada pelo usuário. Pode ser um clique do mouse e até mesmo uma única tecla do teclado. Da mesma forma, os programas C # também possuem eventos. O gerador do evento é chamado de editor e o receptor do evento é chamado de assinante.
Editor
PARA editor contém a definição do evento e do delegado. o delegado de evento associação é definida neste objeto. UMA editor objeto de classe invoca o evento e é notificado a outros objetos.
Assinante
PARA assinante aceita o evento e fornece um manipulador de eventos. o delegar na classe do editor invoca o método / evento manipulador da classe de assinante.
Exemplo:
using System namespace Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Bem-vindo a Edureka . '+ nome de usuário} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}//Resultado:
Bem-vindo ao Edureka. Aprendizagem feliz
Genéricos
Genéricos é um conceito de fornecer aos membros e métodos de uma classe espaços reservados em Tempo de execução. Podemos definir genéricos usando colchetes. Vamos verificar os exemplos a seguir.
Genéricos em uma classe
using System namespace Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Esta mensagem é de uma classe genérica' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}//Resultado:
Esta mensagem é da classe genérica
123
É
Genéricos em um método
using System namespace Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This a mensagem é do método genérico ') genC.Show (321) genC.Show (' H ')}}}//Resultado:
Esta mensagem é do método genérico
321
H
Delegados
o Delegar atua como uma referência para o método. Basicamente, é o mesmo que um ponteiro de função em C e C ++, mas muito melhor e seguro para tipos. O Delegado em método estático encapsula apenas o método. Enquanto o delegado no instância método encapsula o método e a instância. O melhor uso de delegado é como um evento.
Exemplo:
usando System delegate int Calculadora (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculadora c1 = nova Calculadora (adicionar) Calculadora c2 = nova Calculadora (mul) c1 (20) Console.WriteLine ('Depois da calculadora um delegado, o novo número é: '+ getNumber ()) c2 (3) Console.WriteLine (' Após o delegado da calculadora dois, o novo número é: '+ getNumber ())}}//Resultado:
Depois de calcular um delegado, o novo número é: 45
Após calculadora dois delegado, o novo número é: 135
Reflexão
O Reflection é necessário para obter os metadados em tempo de execução. A referência está disponível em System.Reflection namespace. Requer as seguintes classes para ser executado.
- Tipo
- MemberInfo
- ConstructorInfo
- MethodInfo
- FieldInfo
- PropertyInfo
- TypeInfo
- EventInfo
- Módulo
- Montagem
- AssemblyName
- Pointer
Classe de tipo
Classe C # Type representa declarações de tipo para tipos de classe, tipos de interface, tipos de enumeração, tipos de array, tipos de valor
Propriedades de tipo
Uma lista de propriedades importantes das classes Type é mencionada a seguir.
Propriedade Descrição Montagem Obtém o Assembly para este tipo. AssemblyQualifiedName Obtém o nome qualificado do Assembly para este tipo. Atributos Obtém os atributos associados ao tipo. BaseType Obtém o tipo base ou pai. Nome completo Obtém o nome totalmente qualificado do tipo. IsAbstract é usado para verificar se o tipo é abstrato. IsArray é usado para verificar se o tipo é Array. IsClass é usado para verificar se o tipo é Classe. IsEnum é usado para verificar se o tipo é Enum. IsInterface é usado para verificar se o tipo é Interface. IsNested é usado para verificar se o tipo é aninhado. IsPrimitive é usado para verificar se o tipo é Primitivo. IsPointer é usado para verificar se o tipo é Pointer. IsNotPublic é usado para verificar se o tipo não é Público. IsPublic é usado para verificar se o tipo é Público. IsSealed é usado para verificar se o tipo é Selado. IsSerializable é usado para verificar se o tipo é serializável. MemberType é usado para verificar se o tipo é o tipo de membro do tipo aninhado. Módulo Obtém o módulo do tipo. Nome Obtém o nome do tipo. Namespace Obtém o namespace do tipo.
Propriedade Descrição GetConstructors () Retorna todos os construtores públicos para o tipo. GetConstructors (BindingFlags) Retorna todos os construtores para o tipo com BindingFlags especificado. GetFields () Retorna todos os campos públicos para o Tipo. GetFields (BindingFlags) Retorna todos os construtores públicos para o Type com BindingFlags especificados. GetMembers () Retorna todos os membros públicos do tipo. GetMembers (BindingFlags) Retorna todos os membros para o tipo com BindingFlags especificado. GetMethods () Retorna todos os métodos públicos para o Type. GetMethods (BindingFlags) Retorna todos os métodos para o tipo com BindingFlags especificado. GetProperties () Retorna todas as propriedades públicas do tipo. GetProperties (BindingFlags) Retorna todas as propriedades do tipo com BindingFlags especificado. GetType () Obtém o tipo atual. GetType (String) Obtém o tipo para o nome fornecido. Exemplos de reflexão:
Obter tipo
Exemplo:
usando a classe pública GetType do sistema {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}//Resultado:
System.Int32
Obter montagem
Exemplo:
using System using System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}//Resultado:
System.Private.CoreLib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e
Informação de tipo de impressão
Exemplo:
usando System usando System.Reflection public class PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}//Resultado:
Verdade
Falso
Falso
Construtores de impressão
Exemplo:
using System using System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructors of {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c in ci) {Console.WriteLine (c)}}}//Resultado:
Construtores do tipo System.String ...
Void .ctor (Char [])
Void .ctor (Char [], Int32, Int32)
Void .ctor (Char *)
Void .ctor (Char *, Int32, Int32)
Void .ctor (SByte *)
Void .ctor (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])
Métodos de impressão
Exemplo:
usando System usando System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}//Resultado:
Métodos do tipo System.String ...
System.String Replace (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Split (Char [])
System.String [] Split (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Split (System.String, System.StringSplitOptions)
System.String [] Split (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......
Imprimir Campos
Exemplo:
usando System usando System.Reflection public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Fields of {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}//Resultado:
Campos do tipo System.String ...
System.String Vazio
Agora, vamos prosseguir para alguns conceitos avançados de programação C #
Conceitos avançados de C #
Função Anônima
A função que não possui um nome específico é chamada Anônimo Funções. Existem dois tipos de funções anônimas disponíveis em C #
- Expressões Lambda
- Métodos Anônimos
Exemplo:
using System namespace LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}//Resultado:
Quadrado: 625
Métodos Anônimos
o método anônimo fornece a mesma funcionalidade que um expressão lambda, exceto que nos permite ignorar a lista de parâmetros.
Exemplo:
usando o namespace System AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('Esta é uma função anônima')} fun ()}}}//Resultado:
Esta é uma função anônima
Multi-Threading
Multithreading é um processo em que vários threads são criados e atribuídos a diferentes tarefas. isso economiza tempo executando vários trabalhos ao mesmo tempo. A classe multithreading está disponível em System.Threading namespace.
Namespace System.Threading
o System.Threading namespace contém classes e interfaces para facilitar o multithreading. Ele fornece classes para sincronizar o recurso de thread. Uma lista de classes comumente usadas é fornecida abaixo:
- Fio
- Mutex
- Cronômetro
- Monitor
- Semáforo
- ThreadLocal
- Grupo de discussão
- Volátil
Processo e discussão
O processo é realmente e inscrição e é considerado um peso pesado componente. Por outro lado, o tópico é um único módulo de todo o aplicativo. Isto é leve em comparação com o processo
O Ciclo de Vida de um Tópico
Cada Thread tem um Ciclo de Vida. O Ciclo de Vida do thread é definido na classe System.Threading.Thread. A seguir estão os estágios do Ciclo de Vida de qualquer segmento.
- Não iniciado
- Executável (pronto para executar)
- Corrida
- Não executável
- Morto
A classe Thread fornece as seguintes propriedades e métodos da seguinte maneira.
Propriedades da linha
plano de monitoramento e controle do projeto
Propriedade Descrição CurrentThread retorna a instância do encadeamento atualmente em execução. Está vivo verifica se o segmento atual está ativo ou não. IsBackground Para obter / definir o valor do segmento atual está em segundo plano ou não. ManagedThreadId é usado para obter o id único para o encadeamento atualmente gerenciado. Nome é usado para obter ou definir o nome do segmento atual. Prioridade é usado para obter ou definir a prioridade do segmento atual. ThreadState é usado para retornar um valor que representa o estado do thread. Métodos de linha
Método Descrição Aborto() é usado para encerrar o thread. Ele gera ThreadAbortException. Interromper() é usado para interromper um thread que está no estado WaitSleepJoin. Junte-se() é usado para bloquear todos os threads de chamada até que este thread termine. ResetAbort () é usado para cancelar a solicitação Abort para o segmento atual. Currículo() é usado para retomar o encadeamento suspenso. Está obsoleto. Sono (Int32) é usado para suspender o segmento atual pelos milissegundos especificados. Começar() altera o estado atual do encadeamento para Executável. Suspender() suspende o encadeamento atual se não estiver suspenso. Está obsoleto. Produção() é usado para ceder a execução da thread atual a outra thread. Exemplo de thread principal
using System using System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}//Resultado:
MainThread
Manipulação de exceção
o exceção é um erro lançado pelo programa em seu tempo de execução. Executamos o Tratamento de Exceções para tornar nosso programa livre de exceções.
Exceção Descrição System.DivideByZeroException Erro gerado ao dividir um número por zero.
System.NullReferenceException lida com o erro gerado referenciando o objeto nulo.
System.InvalidCastException lida com o erro gerado por typecasting inválido.
System.IO.IOException lida com os erros de entrada / saída. System.FieldAccessException Erro gerado por acesso privado / protegido inválido. Em C #, usamos 4 palavras-chave para realizar manipulação de exceção:
Exemplo:
- tentar
- pegar
- finalmente, e
- lançar
usando System public class EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exceção e) {Console.WriteLine (e)} Console.WriteLine ('Esta mensagem é do bloco catch')}}//Resultado:
System.DivideByZeroException: tentativa de divisão por zero.
em ExExaEdurekample.Main (String [] args) em F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: linha 10
Esta mensagem é do bloco catch
Exemplo de exceção personalizada
usando System public class InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Customized {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } }//Resultado:
InvalidAgeException: Desculpe, espera-se que a idade seja maior que 18
em Customized.validate (Int32 age) em F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: linha 18
em Customized.Main (String [] args) em F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: linha 23
O bloco catch está sendo executado agora.
Finalmente exemplo de bloco
usando a classe pública FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} finally {Console .WriteLine ('Finalmente o bloco é executado')} Console.WriteLine ('Captura o bloco é executado')}}//Resultado:
System.DivideByZeroException: tentativa de divisão por zero.
em FinalExecption.Main (String [] args) em F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: linha 10
Finalmente o bloco é executado
O bloco de captura é executado
Assinatura de exceção do sistema
[SerializableAttribute] [ComVisibleAttribute (true)] public class SystemException: ExceptionConstrutores de exceção do sistema
Construtor Descrição SystemException () É usado para inicializar uma nova instância da classe SystemException. SystemException (SerializationInfo, StreamingContext)
É usado para inicializar uma nova instância da classe SystemException com dados serializados. SystemException (String) Ele é usado para inicializar uma nova instância da classe SystemException com uma mensagem de erro especificada. SystemException (String, Exception) Ele é usado para inicializar uma nova instância da classe SystemException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa dessa exceção. Propriedades de exceção do sistema
Propriedade Descrição Dados É usado para obter uma coleção de pares de chave / valor que fornecem informações adicionais definidas pelo usuário sobre a exceção. HelpLink É usado para obter ou definir um link para o arquivo de ajuda associado a esta exceção. HResult É usado para obter ou definir HRESULT, um valor numérico codificado que é atribuído a uma exceção específica. InnerException É usado para obter a instância Exception que causou a exceção atual. mensagem É usado para obter uma mensagem que descreve a exceção atual. Fonte É usado para obter ou definir o nome do aplicativo que causa o erro. StackTrace É usado para obter uma representação de string dos quadros imediatos na pilha de chamadas. TargetSite É usado para obter o método que lança a exceção atual. Métodos de exceção do sistema
Métodos Descrição Igual a (objeto) É usado para verificar se o objeto especificado é igual ou não ao objeto atual. Finalizar() É usado para liberar recursos e realizar operações de limpeza. GetBaseException () É usado para obter a exceção de root. GetHashCode () Ele é usado para obter o código hash. GetObjectData (SerializationInfo, StreamingContext)
É usado para obter dados do objeto. GetType () É usado para obter o tipo de tempo de execução da instância atual. MemberwiseClone () É usado para criar uma cópia superficial do Objeto atual. Para sequenciar() É usado para criar e retornar uma representação de string da exceção atual. Exemplo de exceção do sistema
usando o namespace do sistema CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}//Resultado:
System.IndexOutOfRangeException: o índice estava fora dos limites da matriz.
em CSharpProgram.SystemExceptionExample.Main (String [] args) em F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: linha 11
Sincronização
No programa multithreading, threads são permitidospara acessar qualquer recurso para oexecução especificadaTempo. Threads compartilham recursos e são executados de forma assíncrona. Acessando recursos compartilhados (dados)pode ser uma tarefa importanteisso geralmentepoderia pararo sistema.temos a tendência de influenciá-locriando threads de maneira síncrona.
Exemplo sem sincronização
using System using System.Threading class Edureka {public void PrintTable () {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } }//Resultado:
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
Exemplo com sincronização
usando System using System.Threading class Edureka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } }//Resultado:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Novas características
A Microsoft adicionou muitos recursos mais recentes à linguagem C #, alguns deles são mencionados abaixo.
C # 6.0
- Usando diretiva estática
- Filtros de exceção
- Aguarde nos blocos catch / finally
- Inicializadores de propriedade automática
- Valores padrão para propriedades somente getter
- Membros com corpo de expressão
- Propagador nulo
- Interpolação de string
- Nome do operador
- Inicializador de dicionário
- Compilador como serviço (Roslyn)
C # 7.0
- Correspondência de padrões
- Tuplas
- Desconstrução
- Funções locais
- Separador de dígitos
- Literais binários
- Devoluções de referência e locais
- Construtores e finalizadores com corpo de expressão
- Getters e setters com corpo de expressão
- Variáveis externas
- Tipos de retorno assíncronos generalizados
C # 7.1
- Assíncrono principal
- Expressões padrão
Perguntas da entrevista baseadas em C #
As perguntas importantes da entrevista com base na linguagem de programação C # podem ser encontradas neste .
Com isso, chegamos ao fim deste artigo “Tutorial C #”. Espero que você tenha entendido a importância das estruturas de dados, sintaxe, funcionalidade e operações realizadas com eles. Agora que você entendeu os fundamentos da programação em C # por meio desteTutorial C #, Confira o treinamento fornecido por Edureka em muitas tecnologias como Java, Primavera e muitosmais, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo obteve um pergunta para nós? Mencione-o na seção de comentários deste blog “Tutorial C #” e entraremos em contato com você o mais breve possível.