2011-06-27 13 views
14
私はC#で問題を抱えてい

、出力状態:静的クラス

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

どのように私はこれを修正するだろうか?

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

はなぜフォームから派生した静的クラスを作成しようとしていますか? – Tim

+0

@ティムあなたはそれが聞こえないかのように言う。ここでは、C#を使用するときにシングルトンに依存することで、この機能(Javaでは設計上可能)を実現しようとしている人たちの例をいくつか見てきました。 –

+0

@ b1nary.atr0phy - 私はそれが聞こえなかった、またはそれを意味するとは決して言わなかった。私は単に彼らになぜそれをしようとしていたのかをOPに尋ねていただけです。 – Tim

答えて

33

それはstaticクラスが宣言で: BaseClassを持っていないことを意味します。彼らは何かを継承することはできません。 (System.Objectからの継承は、何も宣言しないことによって暗黙指定されています)。

staticクラスは、staticのメンバーしか持てません。インスタンスメンバーだけが継承されるので、継承はstaticクラスでは役に立たない。 : Formを削除するだけです。

+0

**派生クラス**のプロパティ/フィールドとして** Base-Class **のインスタンスをインスタンス化する方が良いかもしれません。それから、好きな機能(好みのもの)を公開してください。 – Rzassar

0

フォームからHelloとHello2を派生させる何らかの理由はありますか?ない場合は、単に実行します。これと同様の質問で

public static class Hello2 
{ 
    ... 
} 

同様にクラスこんにちは