Creacion de un Constructor en un elemento de clase

Iniciado por Maria Alejandra, 17 Abril 2016, 19:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Maria Alejandra

segun lo que he leido:

En C# podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor.
El constructor tiene las siguientes características:

-Tiene el mismo nombre de la clase.
-Es el primer método que se ejecuta.
-Se ejecuta en forma automática.
-No puede retornar datos.
-Se ejecuta una única vez.
-Un constructor tiene por objetivo inicializar atributos

Mi clase( es un elemento de tipo clase que esta aparte del programa main):

using System;
class Prueba
{
    private int a, b, c, r = 0;

    private void Prueba()
    {
        a = 1;
        b = 2;
        c = 3;
    }
    public void suma()
    {
        r = a + b + c;
        Console.Write(r);
    }
}


Mi Main


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication25
{
    class Program
    {
        static void Main(string[] args)
        {
            Prueba x = new Prueba();
            x.suma();
            Console.ReadKey();
        }
    }
}



error: 'Prueba': los nombres de los miembros no pueden coincidir con sus tipos envolventes

Si el nombre del constructor tiene que ser igual al nombre de la clase porque me da error ?


Eleкtro

#1
El keyword void dentro del contexto que has mostrado se usa para definir un método que no devuelve un valor, pero un ctor es en realidad un método que devuelve (de forma abstracta) una referencia a la instancia, por lo que no debes especificar el void.

Código (csharp) [Seleccionar]
using System;

class Prueba {
   private int a, b, c, r;

   public Prueba() {
       this.a = 1;
       this.b = 2;
       this.c = 3;
   }

   public void Suma() {
       this.r = (this.a + this.b + this.c);
       Console.Write(r);
   }

}


EDITO: Ah, y aparte de eso, le pusiste visibilidad privada al ctor, un constructor tiene que ser visible/público si quieres instanciar la class, como ya te mencioné en el otro post (o eso creo que hice).

Saludos