Erro do Compilador CS1729

'tipo' não contém um construtor que aceita 'número' argumentos.

Esse erro ocorre quando você invoca o construtor de uma classe direta ou indiretamente, mas o compilador não encontra nenhum construtor com o mesmo número de parâmetros. No exemplo a seguir, a classe test não tem nenhum construtor que aceita argumentos. Portanto, ela tem apenas um construtor sem parâmetro que aceita zero argumentos. Como na segunda linha em que o erro é gerado a classe derivada não declara nenhum construtor próprio, o compilador fornece um construtor sem parâmetro. Esse construtor invoca um construtor sem parâmetros na classe base. Como a classe base não tem esse construtor, o erro CS1729 será gerado.

Para corrigir este erro

  1. Ajuste o número de parâmetros na chamada ao construtor.

  2. Modifique a classe para fornecer um construtor com os parâmetros que você deve chamar.

  3. Forneça um construtor sem parâmetros na classe base.

Exemplo

O exemplo a seguir gera o erro CS1729:

// cs1729.cs  
class Test  
{  
    static int Main()  
    {  
        // Class Test has only a parameterless constructor, which takes no arguments.  
        Test test1 = new Test(2); // CS1729  
        // The following line resolves the error.  
        Test test2 = new Test();  
  
        // Class Parent has only one constructor, which takes two int parameters.  
        Parent exampleParent1 = new Parent(10); // CS1729  
        // The following line resolves the error.  
        Parent exampleParent2 = new Parent(10, 1);  
  
        return 1;  
    }  
}  
  
public class Parent  
{  
    // The only constructor for this class has two parameters.  
    public Parent(int i, int j) { }  
}  
  
// The following declaration causes a compiler error because class Parent  
// does not have a constructor that takes no arguments. The declaration of  
// class Child2 shows how to resolve this error.  
public class Child : Parent { } // CS1729  
  
public class Child2 : Parent  
{  
    // The constructor for Child2 has only one parameter. To access the
    // constructor in Parent, and prevent this compiler error, you must provide
    // a value for the second parameter of Parent. The following example provides 0.  
    public Child2(int k)  
        : base(k, 0)  
    {  
        // Add the body of the constructor here.  
    }  
}  

Confira também