AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# [C#] Fragen zu automatisch generiertem Code
Thema durchsuchen
Ansicht
Themen-Optionen

[C#] Fragen zu automatisch generiertem Code

Ein Thema von Luckie · begonnen am 24. Jul 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
Seite 2 von 3     12 3      
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:06
Zitat von Luckie:
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.
Also da musst du sowas irgendwie ausversehen gelöscht haben:

Code:
public class Form1 : System.Windows.Forms.Form
   {

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.
Bei mir macht VS2003 ne Meldung
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#12

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:08
Zitat:
Dispose ist da wohl der Destruktor wenn ich die bisherigen Versuche mit C# richtig deute.
Es gibt in C# keine Destruktoren. Wenn überhaupt, gibt es nur Finalizer, die mit derselben Syntax geschrieben werden wie in C++ Destruktoren (also ~Classname()).
Dispose ist generell die einzige Methode der IDisposable-Schnittstelle. Sie dient dazu, dem Benutzer die Möglichkeit der deterministischen Zerstörung von Objekten zu geben, die .net ansonsten nicht anbietet. Sie wird meist verwendet, um nicht gemanagete Ressourcen freizugeben. Im .net SDK zu finden unter "Cleaning Up Unmanaged Resources".
In diesem besonderen Fall handelt es sich aber um eine Methode, die bereits in Component definiert wird. Wie im Code zu sehen, ruft sie auch die Dispose-Methoden aller Unterkomponenten auf. Mehr dazu unter Component.Dispose im .net SDK.

Zitat:
Das ist aber ein "Kann" kein "Muss", denke ich. Nennt sich dann, glaube ich, [b]inline-Irgendwas oder so.
Das ist in C++ so. Nicht in C#.

Zitat:
C# ist nunmal keine Sprache, die man hinterher sauber lesen kann.
Dafür gibt es zum einen die Regions und das Folding und zum anderen den Object Browser.

Zitat:
Soll das bedeuten das Foo keine Parameter übergeben werden? Wenn ja dann wird das ohne das Void geschrieben.
In C ist es erforderlich, für eine Funktion ohne Parameter explizit void in die Klammern zu schreiben. Diese Schreibweise ist in C++ nicht nötig, aber möglich. In C# ist sie nicht möglich.

Noch etwas generelles: In C# gibt es nichts "under the hood", also Code, der automatisch vom Compiler erzeugt wird wie in Delphi. Der gesamte Verwaltungscode ist mit drin. Deshalb wurden für C# 2.0 auch partial classes eingeführt, die man also innerhalb mehrerer Dateien definieren kann. Die Designer legen hierzu eine eigene Datei für den gesamten generierten Code an.

[Nachtrag]
Zitat:
Code:
   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";
Übrigens entspricht es in .net nicht der Norm, Konstantennamen (oder andere Bezeichner) groß zu schreiben. Siehe hierzu "Design Guidelines for Class Library Developers" im .net SDK (zu finden unter "Documentation Map by Technology").
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:10
Zitat von Generalissimo:
Zitat von Luckie:
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.
Also da musst du sowas irgendwie ausversehen gelöscht haben:
Versehentlich nicht. Aber kuck dir doch mal die Klammern des Namespace Project1 an. Innerhalb des Namespces liegen eindeutig die Methoden von WinForm. Womit deine Aussage nicht stimmt.

[edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#14

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:13
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";
   
      ...
     
      private void btnAbout_Click(object sender, System.EventArgs e)
      { 
         MessageBox.Show(INFO_TEXT, APPNAME, MessageBoxButtons.OK, MessageBoxIcon.Information);
      } 
   } 
}
Da fehlt ja wohl 'ne Klammer auf. Ich garantiere dir, dass dieser Code nicht kompiliert. Namespaces können keine Funktionen beinhalten.

Nachtrag:
Noch ein Tipp - der C# Builder bringt doch ein kurzer C#-Tutorial mit. Darin wird eigentlich alles geklärt ;c)
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:21
OK, hier der gesamte Code:
Code:
namespace Project1
{
   /// <summary>
   /// Summary description for WinForm.
   /// </summary>
   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);
      }

      #region Windows Form Designer generated code
      /// <summary>
      /// Required method for Designer support - do not modify
      /// the contents of this method with the code editor.
      /// </summary>
      private void InitializeComponent()
      {
         this.btnClose = new System.Windows.Forms.Button();
         this.lblBanner = new System.Windows.Forms.Label();
         this.btnAbout = new System.Windows.Forms.Button();
         this.SuspendLayout();
         // 
         // btnClose
         // 
         this.btnClose.Location = new System.Drawing.Point(208, 144);
         this.btnClose.Name = "btnClose";
         this.btnClose.TabIndex = 0;
         this.btnClose.Text = "&Schließen";
         this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
         // 
         // lblBanner
         // 
         this.lblBanner.BackColor = System.Drawing.Color.White;
         this.lblBanner.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
         this.lblBanner.Location = new System.Drawing.Point(0, 0);
         this.lblBanner.Name = "lblBanner";
         this.lblBanner.Size = new System.Drawing.Size(296, 72);
         this.lblBanner.TabIndex = 2;
         this.lblBanner.Text = "lblBanner";
         this.lblBanner.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
         // 
         // btnAbout
         // 
         this.btnAbout.Location = new System.Drawing.Point(232, 8);
         this.btnAbout.Name = "btnAbout";
         this.btnAbout.Size = new System.Drawing.Size(48, 23);
         this.btnAbout.TabIndex = 3;
         this.btnAbout.Text = "&Info";
         this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click);
         // 
         // WinForm
         // 
         this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
         this.ClientSize = new System.Drawing.Size(292, 175);
         this.Controls.Add(this.btnAbout);
         this.Controls.Add(this.lblBanner);
         this.Controls.Add(this.btnClose);
         this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
         this.MaximizeBox = false;
         this.Name = "WinForm";
         this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
         this.Text = "Foo";
         this.Load += new System.EventHandler(this.WinForm_Load);
         this.ResumeLayout(false);
      }
      #endregion


   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);
      }
   }
}
Wie man sieht gehört die letzte schließende Klammer zu ersten öffnenden Klammer. Und somit liegen die Methoden von WinForm eindeutig im Namespace von Project1.

[edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:23
Da liegt alles im Namespace Project1. Aber viel wichtiger ist, dass alles innerhalb der Klassendeklaration passiert.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#17

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:26
Ich sag's mal so:
Natürlich ist alles im Namespace. In .net kann nichts außerhalb des Namespace existieren.
Aber DIREKT im Namespace können nur Typen definiert werden (class, enum, struct). Nur strukturierte Typen können auch Methoden enthalten. Das gilt für ALLE, selbst für aus Windows-DLLs importierte Funktionen. Es gibt keine Funktionen in .net, nur Methoden. Objektorientiert halt.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#18

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:29
@Luckie: Wieso denn? Nur die Klasse Winform liegt innerhalb des Namespaces. Die Methoden liegen alle innerhalb der Klasse

Code:
namespace Project1
{
   /// <summary>
   /// Summary description for WinForm.
   /// </summary>
   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;

      private void btnAbout_Click(object sender, System.EventArgs e)
      {
         MessageBox.Show(INFO_TEXT, APPNAME, MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
   }
}
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#19

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:31
Der Punkt ist, die Methoden befinden sich in der Klasse, die sich wiederum im Namespace befindet. Somit befindet sich INDIREKT die Methode auch im Namespace. DIREKT im Namespace liegt hingegen nur die Klasse.

Nachtrag: Ich sehe jetzt erst das "@Luckie", sorry ;c)
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

Re: [C#] Fragen zu automatisch generiertem Code

  Alt 24. Jul 2004, 19:43
@OG: Ja so wird ein Schuh draus, also mit dem DIREKT und INDIREKT.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.
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