2011-06-27 20 views
14

Estoy teniendo un problema en C#, los estados de salida:clases estáticas deben derivarse de objeto (C#)

Error 1 Static class 'WindowsFormsApplication1.Hello2' 
cannot derive from type 'System.Windows.Forms.Form'. Static classes 
must derive from object. 

¿Cómo podría corregir esto?

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Hello2.calculate(); 
     } 
    } 



    public class Hello : Form 
    { 
     public string test { get; set; } 

    } 


    public static class Hello2 : Form 
    { 
     public static void calculate() 
     { 
      Process.Start("test.exe"); 

     } 
    } 
+4

Por qué estás tratando de crear una clase estática que se deriva de la Forma? – Tim

+0

@Tim Lo dices como si fuera algo inaudito. He encontrado varios ejemplos aquí en SO de personas que intentan lograr esta funcionalidad (que, por diseño, es posible en Java) al confiar en singletons al usar C#. –

+0

@ b1nary.atr0phy - Nunca dije que no se escuchara o que incluso se supusiera sugerirlo. Simplemente le preguntaba a OP por qué estaban tratando de hacer eso. – Tim

Respuesta

33

Esto significa que static clases no pueden tener : BaseClass en la declaración. No pueden heredar de nada. (La herencia de System.Object está implícita al no declarar nada).

Una clase static solo puede tener static miembros. Solo los miembros de la instancia se heredan, por lo que la herencia es inútil para las clases static. Todo lo que tienes que hacer es eliminar : Form.

+0

Quizás sería mejor instanciar una instancia de ** Base-Class ** como una propiedad/campo de ** Derived-Class **, luego exponer la funcionalidad (que desee) fuera de ella. – Rzassar

0

¿Hay alguna razón para derivar Hello y Hello2 del formulario? Si no, simplemente hacer:

public static class Hello2 
{ 
    ... 
} 

asimismo para la clase Hola

Cuestiones relacionadas