Articles of design de linguagem

Por que as variables ​​locais exigem boot, mas os campos não?

Se eu criar um bool dentro da minha class, apenas algo como bool check , o padrão é false. Quando eu crio o mesmo bool dentro do meu método, bool check (ao invés de dentro da class), recebo um erro “uso da verificação de variável local não atribuída”. Por quê?

Por que os idiomas não geram erros no estouro de números inteiros por padrão?

Em várias linguagens de programação modernas (incluindo C ++, Java e C #), a linguagem permite que um estouro de inteiro ocorra em tempo de execução sem aumentar qualquer tipo de condição de erro. Por exemplo, considere este método (criado) em C #, que não considera a possibilidade de estouro / estouro negativo. (Por questão […]

Por que o Ruby possui methods privados e protegidos?

Antes de ler este artigo , achei que o controle de access em Ruby funcionava assim: public – pode ser acessado por qualquer object (por exemplo, Obj.new.public_method ) protected – só pode ser acessado de dentro do próprio object, bem como de quaisquer subclasss private – mesmo que protegido, mas o método não existe em […]

O que significa void em C, C ++ e C #?

Olhando para obter os fundamentos de onde vem o termo ” vazio “, e porque é chamado de vazio. A intenção da pergunta é ajudar alguém que não tenha experiência em C e, de repente, está olhando para uma base de código baseada em C.

Por que a variável de iteração em uma instrução c # foreach é somente leitura?

Pelo que entendi, variável de iteração foreach do C # é imutável. O que significa que não posso modificar o iterador assim: foreach (Position Location in Map) { //We want to fudge the position to hide the exact coordinates Location = Location + Random(); //Compiler Error Plot(Location); } Eu não posso modificar a variável iterator […]

Por que os methods de extensão de class estática C # não são suportados?

Eu sei dessa questão que os methods de extensão só podem operar em instâncias de class, não na própria class estática. Isso significa que não posso estender classs estáticas úteis como Convert e Math . O que eu quero saber é, porque é esse o caso? No link acima, há algumas sugestões sobre como a […]

Por que as referências não são recolocáveis ​​em C ++?

Referências C ++ possuem duas propriedades: Eles sempre apontam para o mesmo object. Eles não podem ser 0. Os pointers são o oposto: Eles podem apontar para objects diferentes. Eles podem ser 0. Por que não há “referência ou ponteiro não anulável e substituível” em C ++? Não consigo pensar em uma boa razão pela […]

Por que as funções inline do C ++ estão no header?

NB Esta não é uma questão sobre como usar funções inline ou como elas funcionam, mais por que elas são feitas do jeito que são. A declaração de uma function de membro de class não precisa definir uma function como inline , é apenas a implementação real da function. Por exemplo, no arquivo de header: […]

Por que a instrução switch foi projetada para precisar de uma pausa?

Dada uma simples troca de comando switch (int) { case 1 : { printf(“1\n”); break; } case 2 : { printf(“2\n”); } case 3 : { printf(“3\n”); } } A ausência de uma declaração de quebra no caso 2, implica que a execução continuará dentro do código para o caso 3. Isto não é um […]

Por que não posso ter methods estáticos abstratos em c #?

Eu tenho trabalhado com fornecedores ultimamente, e me deparei com uma situação interessante em que eu queria ter uma class abstrata que tivesse um método estático abstrato. Eu li alguns posts sobre o assunto, e meio que faz sentido, mas existe uma explicação clara?