Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# [C#] Fragen zu automatisch generiertem Code (https://www.delphipraxis.net/26516-%5Bc-%5D-fragen-zu-automatisch-generiertem-code.html)

Luckie 24. Jul 2004 15:59


[C#] Fragen zu automatisch generiertem Code
 
Also, ich habe mir gerade den C# Builder von Borland installiert. Bei einem leeren Projekt generiert die IDE folgendes:
Code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
Klar, entspricht dem gewohntem uses nur dass eben die Namespaces bekannt gegeben werden, die benutzt werden sollen.

Dann:
Code:
   public class WinForm : System.Windows.Forms.Form
   {
      /// <summary>
      /// Required designer variable.
      /// </summary>
      private System.ComponentModel.Container components = null;
      private System.Windows.Forms.Button btnClose;
      private System.Windows.Forms.Button btnAbout;
      private System.Windows.Forms.Label lblBanner;

      public WinForm()
      {
         //
         // Required for Windows Form Designer support
         //
         InitializeComponent();

         //
         // TODO: Add any constructor code after InitializeComponent call
         //
      }

      /// <summary>
      /// Clean up any resources being used.
      /// </summary>
      protected override void Dispose (bool disposing)
      {
         if (disposing)
         {
            if (components != null)
            {
               components.Dispose();
            }
         }
         base.Dispose(disposing);
      }
Fdas ist die Klasse meines Formulares, entspricht TForm. So jetzt fängt es aber schon an. Diese public WinForm() { ... } ist ja eine Methode, was hat di in der Klasse-Definintion zu suchen. Ist das was C++ typisches?
Ebendso verhält es sich mit protected override void Dispose (bool disposing) { ... }. Aber hier stellt sich mir die Frage: Was macht diese Funktion? Wozu ist sie gut?
Dann kommt noch
Code:
#region Windows Form Designer generated code
...
...
...
#endregion
Das ist auch klar, das sind die abweichenden Einstellungen von den standard Einstellungen die man im OI eingestellt hat.

So, wenn mir da doch bitte jemand meine Fragen beantworten könnte und eventuell falsches richtig stellt oder unvollständiges ergänzt, wäre ich dankbar dafür.

[edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]

CalganX 24. Jul 2004 16:02

Re: [C#] Fragen zu automatisch generiertem Code
 
Hi,
in C# befinden sich alle Methoden innerhalb der Klassendefinition. Das hat die Sprache so an sich. ;) Und die Methode WinForm ist ein Konstruktor - wie bei C++.
Dispose ist da wohl der Destruktor wenn ich die bisherigen Versuche mit C# richtig deute. ;)

Chris

Luckie 24. Jul 2004 16:12

Re: [C#] Fragen zu automatisch generiertem Code
 
Zitat:

Zitat von Chakotay1308
in C# befinden sich alle Methoden innerhalb der Klassendefinition. Das hat die Sprache so an sich.

Das ist aber ein "Kann" kein "Muss", denke ich. Nennt sich dann, glaube ich, [b]inline-Irgendwas oder so.

Zitat:

Dispose ist da wohl der Destruktor wenn ich die bisherigen Versuche mit C# richtig deute. ;)
Also der
Destructor[i] für die Klasse? Sieht aber reichlich kompliziert aus. :gruebel:

Chewie 24. Jul 2004 16:15

Re: [C#] Fragen zu automatisch generiertem Code
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Chakotay1308
in C# befinden sich alle Methoden innerhalb der Klassendefinition. Das hat die Sprache so an sich.

Das ist aber ein "Kann" kein "Muss", denke ich. Nennt sich dann, glaube ich, [b]inline-Irgendwas[i] oder so.

Wie sollte es denn sonst aussehen?

Luckie 24. Jul 2004 16:24

Re: [C#] Fragen zu automatisch generiertem Code
 
Na so, wie man es eben kennt:
Code:
class Temperatur {
  public int Foo(void)
}

int Temperatur::Foo(void) {
  TuWas;
}

Chewie 24. Jul 2004 17:24

Re: [C#] Fragen zu automatisch generiertem Code
 
Ah, wusste nicht, dass das auch geht. OK, meine C#-Kenntnisse sind auch nicht gerade erwähnenswert...

S - tefano 24. Jul 2004 18:22

Re: [C#] Fragen zu automatisch generiertem Code
 
Also laut meinem Schulwissen stimmt das mit dem Konstruktor. In den meisten C-verwandten Sprachen handelt es sich bei einer Methode die genauso heißt wie die Klasse der sie angehört tatsächlich um den Konstruktor.
Naja, und dass es bei ner WinForm etwas komplizierter aussieht scheint ja ein bisl logisch. Ist bei einem Win32API-Code für ein Formular -aus meiner Sicht- ja genau das gleiche ;-)

Bis dann,

S - tefano

Phoenix 24. Jul 2004 18:45

Re: [C#] Fragen zu automatisch generiertem Code
 
Also es ist definitiv der Constructor :)

Und in C# ist es eigentlich gang und gebe, die Methoden direkt in der Klasse zu implementieren. Eine Klassendefinition vorher zu machen erscheint den meisten die aus dem C-Lager kommen zu viel Tipparbeit zu sein.
C# ist nunmal keine Sprache, die man hinterher sauber lesen kann.

Generalissimo 24. Jul 2004 18:54

Re: [C#] Fragen zu automatisch generiertem Code
 
Zitat:

Zitat von Luckie
Na so, wie man es eben kennt:
Code:
class Temperatur {
  public int Foo(void)
}

int Temperatur::Foo(void) {
  TuWas;
}

Eben das geht nicht! Du kannst innerhalb eines Namespaces keine Methoden oder Felder haben.

Zudem ne Frage. Was soll public int Foo(void) für ne Konstruktion sein?

Soll das bedeuten das Foo keine Parameter übergeben werden? Wenn ja dann wird das ohne das Void geschrieben.

Luckie 24. Jul 2004 18:59

Re: [C#] Fragen zu automatisch generiertem Code
 
Zitat:

Zitat von Generalissimo
Eben das geht nicht! Du kannst innerhalb eines Namespaces keine Methoden oder Felder haben.

Das ist ja blöd. Aber es stimmt nicht fällt mir da gerade ein:
Code:
namespace Project1
{
   const String APPNAME = "Hello";
   const String VER = "1.0";
   const String INFO_TEXT = APPNAME + " " + VER+"\nCopyright (c) 2004 Michael Puff\n\nhttp://www.luckie-online.de";

      /// <summary>
      /// The main entry point for the application.
      /// </summary>
      [STAThread]
      static void Main()
      {
         Application.Run(new WinForm());
      }
      
      private void btnClose_Click(object sender, System.EventArgs e)
      {
         Application.Exit();
      }
      
      private void WinForm_Load(object sender, System.EventArgs e)
      {
        this.Text = APPNAME;
          lblBanner.Text = APPNAME;
      }
      
      private void btnAbout_Click(object sender, System.EventArgs e)
      {
         MessageBox.Show(INFO_TEXT, APPNAME, MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
   }
}
Hier liegen eindeutig Methoden von WinForm in einem namespace, nämlich dem von Project1.

Zitat:

Zudem ne Frage. Was soll public int Foo(void) für ne Konstruktion sein?

Soll das bedeuten das Foo keine Parameter übergeben werden? Wenn ja dann wird das ohne das Void geschrieben.
In meinem C++ Buch steht es so drinne und so habe ich schon gerbeitet. Geht wunderbar, keine Warnung, nichts.

[edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz