Mono e C# (parte 1)

Este é o primeiro artigo de uma série de artigos que visam apresentar e introduzir Mono e C# para os amantes do mundo livre e dos admiradores e usuários do Linux.

[ Hits: 80.654 ]

Por: Gilzamir Ferreira Gomes em 19/03/2005


Explicando o código do HelloWorld



Na página anterior, mostrei como compilar e executar um programa em Mono. Agora veremos como funciona o código de amostra, explicando vários aspectos da linguagem C#.

Revendo o código HelloWorld.cs:

1 class HelloWorld{
2 public static void Main(){
3         System.Console.WriteLine("HelloWorld in C#");
4 }
5 } //fim da classe HelloWorld

Observe que agora numerei as linhas, mas a numeração das linhas não faz parte do código e serve apenas de referência para as explicações que farei adiante:

A primeira linha é uma declaração da classe, ou seja, a partir da chave de abertura na linha 1 até a chave de fechamento na linha 5, veremos a definição de uma classe cujo nome é "HelloWorld". Veja que declaramos uma classe em C# usando a palavra reservada class (do mesmo jeito que fazemos em Java) seguida do nome da classe.

Na segunda linha começamos a declaração do método que é chamado quando o programa HelloWorld é chamado. Chamamos este método de ponto de entrada do programa (em C#, o ponto de entrada do programa é método público e estático Main()).

Mono fornece um conjunto de bibliotecas de classe para facilitar a vida dos programadores; tais bibliotecas são estruturadas hierarquicamente em espaços de nome. Ou seja, nomes colocam várias classes numa mesma estrutura usando-se a palavra-chave namespace. Podemos ter espaços de nomes dentro de outros espaços de nomes, mas o primeiro nível para a maioria das classes no Framework dot Net é System. Para usarmos a classe WriteLine, por exemplo, usamos o nome completo da classe (incluindo seus espaços de nome). O primeiro espaço de nome (no caso da classe Console) é System. Assim, na linha 3 do espaço do nosso HelloWorld, chamamos o método estático WriteLine da classe Console da seguinte forma:

System.Console.WriteLine("HelloWorld in C#");

Em C# também podemos usar estruturas e enumerações. O código de uma classe fica entre chaves, assim como o código de um método. Este HelloWorld foi apenas para aquecer, nos próxima página e nos próximos artigos falarei sobre Programação Orientada a Objetos com C#.

Página anterior     Próxima página

Páginas do artigo
   1. Executando e compilando um Hello World em C#
   2. Explicando o código do HelloWorld
   3. C# e POO
Outros artigos deste autor

Mono - Por que usá-lo?

Mono e C# (parte 2)

Ser livre, mas manter padrões

C - Include e Makefile

Leitura recomendada

Rastrear e recuperar seu PC ou notebook roubado

Terminais leves com LTSP - Linux Terminal Server Project

Outro método (rápido/fácil) de instalação e configuração do gdesklets no Slackware 10

Escolhendo pacotes durante a instalação do Slackware 10.2

Instalando um ambiente leve e funcional em computadores antigos

  
Comentários
[1] Comentário enviado por fabio em 19/03/2005 - 23:22h

Ótimo artigo, código muito bem explicado! Depois dessa vou até experimentar o Mono pra poder tecer meus comentários sobre essa ferramenta :). Tô ficando pra trás.

[]'s

[2] Comentário enviado por scottys0 em 20/03/2005 - 01:00h

C# ... copia explicita do Java ... ehhehee

[3] Comentário enviado por dino em 20/03/2005 - 05:08h

Muito bom artigo. Bom trabalho

[4] Comentário enviado por kaos666 em 20/03/2005 - 20:08h

Sobre o comentário feito por scottys0:

C# não é uma cópia explicita do Java, mas reune as melhores características de várias linguagens de programação. Se um objeto A é uma cópia do objeto B, então é suposto que os objetos são idênticos(exceto pela posição que ocupam - dois objetos não podem ocupar o mesmo lugar ao mesmo tempo - Física básica). Java não tem o conceito de propriedades (algo que C# herdou talvez do Object Pascal - ambas as linguagens tiveram o mesmo arquiteto). C# suporta struct e enum, coisas que Java não suporta. Eu gosto de programar em Java, gosto de Java, mas com C# me sinto mais confortável. A linguagem oferece muitas facilidades.

[5] Comentário enviado por xfer em 21/03/2005 - 00:46h

Embora não esteja defendendo, Java 1.5 suporta enum e generics. C# na versão ECMA ainda não suporta. Torço para o pessoal do Mono manter-se fiel a especificação e não virar somente uma versão de .NET para GNU/Linux.

[6] Comentário enviado por mpsnet em 21/03/2005 - 09:45h

Em uma versão anterior do mono, eu instalei o MonoDevelop um IDE para C#, mas não consegui utilizar a "ToolBox" para criar formularios, tinha q fazer isso na unha, q acarreta uma perca de tempo muito grande para desenvolvimento, será que alguem conhece algum outra ferramente mais completa, ou me desculpem se não utilizei o MonoDevelop de maneira correta alguem poderia me explicar como criar a "ToolBox".

Grato

[7] Comentário enviado por kaos666 em 21/03/2005 - 10:26h

Respondendo ao mpsnet:

O Monodevelop ainda não tem uma ToolBox. Uma forma fácil de criar formulário é vc utilizar o Glade. No Monodevelop, basta ir ao menu file e em seguida clicar em Soluções. Na janela que aparecer, escolha a opção de projeto Glade. Como estou com pouco tempo, em breve publicarei um tutorial explicando isso...

[8] Comentário enviado por removido em 21/03/2005 - 18:29h

realmente a ideia do mono seria interessante. mas ninguem tira da minha cabeça que existe código malicioso dentro do mono. um compilador .NET opensource numa versão estável e a M$ ainda não abriu a boca? muito estranho.... mas sei la neh... quem sou eu!

[9] Comentário enviado por Ragen em 21/03/2005 - 22:27h

arthurbsi,

Pense com seu bolso. As regras de mercado são sempre de *incluir* e agregar novos mercados.

Se a moda pega - coisa que eu realmente nao tenho medo - teriamos ai a Microsoft roubando o mercado da Sun. Mas essa discussão não me diz respeito... Não aposto minha fixa em nenhum dos 2, acho que a nova tendencia de desenvolvimento que será o boom está além do paradigmas de orientação à objetos.

[10] Comentário enviado por GlimerMan em 22/03/2005 - 10:50h

Saudações....

Pessoal, vou direto ao assunto: Diga NÃO ao MONO! Vocês realmente sabem o que é o "Projeto Mono" ? É uma farça! Ele é um framework baseado no .NET e vem entulhado de patentes e copyrights e coisas afins, que no mundo GNU/GPL não existem. Não fechem os olhos! A MS está querendo se infiltrar no mundo Linux, deixando o pessoal GPL "usar" seu valioso código cheio de patentes, e quando estiver tudo rodando as "mil maravilhas" (se é que algo usando code da MS funciona assim) em servers Linux, eles vem com seus advogados e dizem que estamos infrigindo essa, essa e essa patente, e esse e esse copyright.
Recomendo este link:
http://beam.to/taq/mono.php

Leiam e tirem suas próprias conclusões.... E pensem na história que foi construída até hoje com o GNU/Linux e GPL.

[]'s

[11] Comentário enviado por removido em 22/03/2005 - 19:54h

Concordo plenamente com nosso amigo GlimerMan ! F...-se o Mono e a M$!

[12] Comentário enviado por kaos666 em 22/03/2005 - 23:54h

Vejo que ignorância ainda impera. Pelo que eu sei qualquer software pode ser vítima do ataque das patentes (inclusive os SO's GNU/Linux). Recentemente, os mantenedores do projeto Mplayer (player que roda sobre Linux) anuciaram o fechamento do site oficial do projeto devido a violação de patentes e direitos autorais. Não há uma só linha de código do MPlayer escrita em C# ou que rode sobre a plataforma Mono. O que temos que lutar é contra a lei de patentes que os EUA querem exportar para todos os países do mundo e não contra o software X ou o software Y. A Europa está a um passo de aprovar a lei de patentes lá e isso signifca um ataque quase mortal contra o software livre naquele continente. A lei de patentes que os EUA estão querendo exportar para o mundo emperram a GPL.

Detalhes:

1 - O Mono é baseado num padrão aberto (ECMA/ISO ). O código escrito para fazer o Mono não foram feitos pela equipe da Microsoft; Mono não é da Microsoft. Há uma empresa que apóia o Mono: A Novel (detentora da Ximian, empresa que foi comprada do Miguel de Icaza). Mono é licenciado sob a licença LGPL (uma licença free).

2 - Compiladores para Mono (C#, VB .NET) são licenciados sob os termos da licença GNU GPL.

3 - A Biblioteca de Classes Mono é licenciada sob os termos da licença MIT X11, uma licença open-source.

4 - Se vocês acham que há algum troço no código do Mono, entrem no site http://mono-project.com e baixem o código-fonte do dito cujo; podem baixar! É livre. Podem baixar, ler, modificar, distribuir e usar.

[13] Comentário enviado por bittsbr em 07/04/2005 - 20:29h

Caro kaos666. Te devolvo o império da ignorância e lhe concedo a coroa. Considere a possibilidade de ler atentamente o artigo citado por GlimmerMan. A base de argumentação é bastante razoável.

Embora eu já soubesse que a equipe que desenvolveu o C# fora importada da Borland pela Microsoft e que a linguagem traga algumas características que a difere do Java. Ainda assim o C# me parece uma corruptela do Java. Você deve saber também que o .NET dificilmente se tornará multi-plataforma de fato. A menos que consideremos multi-plataforma um framework que seja somente 100% compatível em diferentes versões do MS-Windows. Lembrando que muitas da bibliotecas de classe são exclusivas para os ambientes MS.

Se a idéia é desenvolver em um ambiente multi-plataforma de fato acredito que o Java continua e continuará sendo a melhor alternativa.


[14] Comentário enviado por cirntista_loko em 13/04/2005 - 10:32h

meu email he: Andrexonline@mixx.com.br
tenho esta duvidas abaixo se alguem puder me ajudar ::
desde já agradeço.

C# roda em plataforma linux?
C# tem ferramenta free?
C# quanto é melhor seu desenpenho perrante a java?
C# vale apena mudar de java?
C++ é um algue para aplicações em desktop, porem para uma boa com comunicação web quem leva a melhor Java Ou C#

[15] Comentário enviado por ricesp em 18/05/2005 - 02:46h

Olha, cadastrei-me neste fórum somente para postar uma mensagem aos que procuram no mono uma alternativa VIÁVEL ao desenvolvimento multi-plataforma. Não sou xiita com uma linguagem ou outra, mas após ler os comentários acima senti-me obrigado a comentar...

Sobre a opinião do GlimerMan, só lamento por ele e por outras pessoas que comentam sobre determinada arquitetura sem conhecê-la ou estudá-la. Se ao menos tivessem interesse em obter mais informações antes de postar os comentários, estes fóruns seriam muito mais "limpos" e instrutivos.

Se todos nós seguirmos somente os "pedaços" de notícias que estão no artigo sugerido, podemos ter uma opinião errônea sobre determinada tecnologia (o que parece que está acontecendo)...

Sobre o Mono, leiam no projeto e verão que 99,9% dos "argumentos" citados não correspondem ao que é proposto pelo projeto. Acho mono uma alternativa viável ao desenvolvimento multi-plataforma, assim como o Java, Python(devidas proporções) e outras linguagens...

A idéia de um framework onde não importa a linguagem utilizada e sim a semântica do projeto é um sonho dos programadores (quem programou na década de 80 sabe o que estou falando), e finalmente surge um projeto que pode (digo PODE) revolucionar os paradigmas da programação com equipes multi-culturais em um mesmo projeto.

Portanto sugiro que antes de postarem comentários infantis do tipo (*Use isto, não use aquilo!!!) ou (Bill Gates é o Diabo!!) e coisas do gênero LEIAM BEM antes de propor uma idéia. Lembrem-se que várias pessoas que frequentam fóruns são iniciantes e esperam encontrar SOLUÇÕES para seus problemas.

A propósito, a respeito da "reportagem" mencionada leiam o currículo do autor e observem uma frase pouco "tendenciosa" a respeito....

...etc etc etc mas atualmente uso praticamente só Java, que é para mim, a linguagem mais prática e poderosa que tem por aí...

Opinião pessoal: É realmente de estranhar que os ataques ao mono são na maior parte por programadores em Java, talvez preocupados em ter que reaprender conceitos e tecnologias. Não tenho absolutamente nada contra o Java (apenas ressalvas quanto a performance e algumas incompatibilidades das jvm´s por aí) mas é uma tecnologia em uso em muitas empresas e projetos de grande porte.

Para concluir, linguagens de programação são FERRAMENTAS de codificação de algoritmos e não TIMES DE FUTEBOL e muito menos RELIGIÃO.

[16] Comentário enviado por kayohf em 27/07/2006 - 05:22h

putz valeu :D me mostrou que seu esqueleto é identico ao Java, me facilita muito aprender agora.

[17] Comentário enviado por removido em 20/08/2007 - 18:05h

Olá a todos! Estou fazendo um código em C#, utilizando o Visual Studio 2005, bem báasico usando uma list view para mostrar uma lista de diversos assuntos com uma check box para selecioná-los. Acontece que não estou conseguindo executar esse código no mono. Alguém sabe me dizer se a list view está criada no mono ou se existe algum outro objeto correlato onde eu possa fazer esse tipo de coisa? Obs.: o mono que estou usando é da versão 1.2.4. Obrigada desde já.

[18] Comentário enviado por FireBird em 13/11/2008 - 12:24h

Cara... MUITO BOM seu artigo... Me ajudou demais aqui, mas ainda to com uma dúvida...

Pra eu executar arquivos (.msi - MS Installer), como que faço?

Tentei aqui e não funfo...

[19] Comentário enviado por rbarfk em 29/10/2010 - 11:45h

bom artigo!
valeu

[20] Comentário enviado por Skulling em 06/08/2019 - 23:51h

Olá pessoal,

Gostaria de saber como posso executar de fato comandos via C# no Terminal do Linux, mais especificadamente no Rasbian !

Já pesquisei por semanas, tudo que vejo é só "Hello World !!" Sendo que necessito executar via C# comandos como um simples "su" ou mais especificadamente o comando "candump can0" e conseguir recuperar o retorno de informações que o terminal devolverá...

Fico ansioso no aguardo de auxílio, valeu galera !!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts