¿Puedo llamar a un constructor sobrecargado de otro constructor de la misma clase en C#?¿Puedo llamar a un constructor sobrecargado de otro constructor de la misma clase en C#?
Respuesta
EDITAR: Según los comentarios en la publicación original, esta es una pregunta de C#.
Respuesta corta: sí, usando la palabra clave this
.
Respuesta larga: sí, usando la palabra clave this
, y aquí hay un ejemplo.
class MyClass
{
private object someData;
public MyClass(object data)
{
this.someData = data;
}
public MyClass() : this(new object())
{
// Calls the previous constructor with a new object,
// setting someData to that object
}
}
la cuestión no era de esto, la pregunta está preguntando si usted puede hacer esto MiClase pública() { // // hacer algo continuación vamos a llamar a otro constructor esto (nuevo objeto()); /// ¡No puedes hacer esto! } – mfawzymkh
gracias mfaawymkh ... así que no puedo hacer eso. –
Ah, ja, lo entiendo ahora. Sí, no se puede hacer. –
No, usted no puede hacer eso, el único lugar donde puede llamar al constructor de otro constructor en C# es inmediatamente después de ":" después del constructor. por ejemplo
class foo
{
public foo(){}
public foo(string s) { }
public foo (string s1, string s2) : this(s1) {....}
}
En C# no es posible llamar a otro constructor desde el interior del cuerpo del método. Puede llamar a un constructor base de esta manera: foo (args): base() como se señaló usted mismo. También puede llamar a otro constructor en la misma clase: foo (args): this().
Cuando quiera hacer algo antes de llamar a un constructor base, parece que la construcción de la base es de clase y depende de algunas cosas externas. Si es así, debe hacerlo a través de argumentos del constructor base, no estableciendo propiedades de la clase base o algo así
Si quiere decir si puede hacer ctor encadenamiento en C#, la respuesta es sí. The question ya se ha pedido.
Sin embargo, parece a partir de los comentarios, parece lo que realmente tiene la intención de preguntar es '¿Puedo llamar a un constructor sobrecargado de dentro otro constructor con el procesamiento de pre/post?
Aunque C# no tiene la sintaxis para hacer esto, usted puede hacer esto con una función de inicialización común (igual que lo haría en C++ que no soporta el encadenamiento de Héctor)
class A
{
//ctor chaining
public A():this(0)
{ Console.WriteLine("default ctor"); }
public A(int i)
{ Init(i); }
// what you want
public A(string s)
{
Console.WriteLine("string ctor overload");
Console.WriteLine("pre-processing");
Init(Int32.Parse(s));
Console.WriteLine("post-processing");
}
private void Init(int i)
{
Console.WriteLine("int ctor {0}", i);
}
}
Probablemente esta sea la respuesta aceptada. – Panzercrisis
- 1. llamar al constructor de otro constructor en una misma clase
- 2. Llamar a un constructor de otro constructor en la misma clase
- 3. ¿Puede un constructor llamar a otro constructor en C++?
- 4. llamar al constructor de otro constructor
- 5. Llamar al constructor sobrecargado de una clase base virtual
- 6. No se puede llamar a un constructor sobrecargado en Scala
- 7. C# llamar a un constructor del cuerpo de otro
- 8. Constructor sobrecargado llamando a otro constructor, pero no como primera instrucción
- 9. C++ 11 llamar al constructor del constructor del tipo misma clase
- 10. Cómo reenviar la llamada de constructor sobrecargada a otro constructor en C++/CLI
- 11. ¿Puedo llamar a un constructor de copia de forma explícita?
- 12. Constructor de base de llamadas y otro constructor en el constructor
- 13. Comprobar si un constructor llama a otro constructor
- 14. Llamar a un constructor de la clase padre de un niño de clase en Python
- 15. Por qué llamar explícitamente a un constructor en C++
- 16. Llamar a un método en Constructor
- 17. ¿Por qué mi sobrecargado constructor de C++ no se llama?
- 18. Llamar a un constructor parametrizado de XAML
- 19. Llamar a un constructor de la clase base desde la clase derivada en Java
- 20. En C#, ¿necesita llamar al constructor base?
- 21. C++: Llamar a un constructor de la clase base con un argumento computarizada
- 22. C++ constructor de la clase de gama
- 23. Move Constructor llamando a la clase base Move Constructor
- 24. C# clase sin constructor
- 25. operador de conversión sobrecargado o constructor de argumento único
- 26. Utilizando C# reflexión para llamar a un constructor
- 27. Diciendo a StructureMap que use otro constructor
- 28. C++ - ¿Cómo inicializo un constructor de una clase separada del constructor de una clase?
- 29. llamando al constructor de un miembro de la clase en el constructor
- 30. invocando el constructor de copia dentro de otro constructor
qué idioma? ... –
@Malay: ¿De qué idioma estás hablando? Si estás hablando de java/C#, ¿por qué debería ser esta una pregunta? La documentación debería ayudarlo antes de publicar una pregunta. Lo siento, si estoy equivocado en mi comprensión. – shahkalpesh
C# .. me puede llamar segundo constructor como esto foo (args) de base() pero ¿es posible hacer como esto foo() { // hacer algo foo (args) // hacer algo } –