mikrocontroller.net

Forum: PC-Programmierung Visual Studio, Problem Objekt v. 2 Klassen erzeugen


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin !

Ich versuche mi Visual Studio ein Objekt zu erzeugen. Normalerweise sehe 
da kein Problem mit, aber es hakt irgendwie...!

Ich habe zwei Klassen jeweils eine in einem separaten Dokument.

Programm.cs dort befindet sich public partial class Form1 : Form {}
Header.cs dort befindet sich public class Header {}

Jetzt möchte ich gerne ein Objekt in der Klasse p p c Form1: Form {}
in der Methode public Form1{} erstellen.

Die Idee ist
public Form1 {
Header test = new Header(); }

Theoretisch sollte test mein Objektvariable der Klasse Header sein!
Aber es wird kein Objekt erzeugt!!

Was mache ich falsch ???

Gruss Bernd und Danke für die Mithilfe !!

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mahlzeit...
Hat niemand von Euch ne Idee, wie ich mein Problem lösen kann?

Fehlen irgendwelche Information oder soll ich das Problem besser 
beschreiben?

Gruss Bernd

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Beschreibung klingt ein bischen konfus.
Zumindest ich kann damit so gut wie nichts anfangen.

Alte Regel: Bechreibe nicht deinen Code, sondern zeig ihn
her!
Wenn der Code zu lang ist um gepostet zu werden, dann erzeuge
ein möglichst kurzes Demobeispiel, welches denselben Fehler
zeigt.

Woher weist du eigentlich, dass das Objekt nicht erzeugt wird.
Was sagt der Debugger? Hast du schon mal einen Breakpoint auf
Header test = new Header();
gesetzt? Kommt das Programm dort vorbei?

> Die Idee ist
> public Form1 {
> Header test = new Header(); }

Was soll das sein? Das kann keine Methode sein, weil da die Klammern
für das nicht vorhandene Funktionsargument fehlen. Ein Property
kanns aber auch nicht sein.


Poste bitte deinen tatsächlichen Code.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK...auf eine Neues.
Hier die beiden Programmteile...

Quelltext: Programm.cs
namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
           InitializeComponent();
           Header objzse = new Header();
        }
}


Quelltext: Header.cs
namespace Test
{
    public class Header
    {  
       // noch ohne Inhalt 
    }
} 

Ich das so besser ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist besser.

Du sagt also, dass kein Objekt erzeugt wird.
Woher weist du das?

Hast du dem Header Objekt schon mal einen Konstruktor verpasst
und dich da mit einem Breakpoint rangeklemmt?

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok... so habe ich den Konstruktor ins Leben gerufen..

Quelltext: Header.cs

namespace Test
{
    public class Header
    {  
       public Header()      // Konstruktor
       {
         // ohne Inhalt 
       }

    }
}


Quelltext: Programm.cs
namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
           InitializeComponent();
           Header objzse = new Header();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            // Hier will ich das Objekt "objzse" nutzen !
            // Compiler meldet: " the name objzse does not exist in the 
            // current context "
        }

}

Was kann das sein ?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh Dir mal den Gültigkeitsbereich von "objzse" an.

Autor: Compy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab irgendwann mal Visual Basic gemacht, ohne .NET, und ich glaub, 
da musste man Objekte ganz besonders zuweisen:
Set ObjektVariable = new Objekt

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd wrote:

>         private void Form1_Load(object sender, EventArgs e)
>         {
>
>             // Hier will ich das Objekt "objzse" nutzen !
>             // Compiler meldet: " the name objzse does not exist in the
>             // current context "
>         }

Das kann schon sein, dass du das Objekt hier benutzen willst.
Geht aber nicht, denn

>        public Form1()
>        {
>           InitializeComponent();

der Lebensbereich dieses Objektes beginnt genau hier ...

>           Header objzse = new Header();

... und endet genau hier.
Danach gibt es das Objekt schlicht und ergreifend nicht mehr.

        }

> Was kann das sein ?

Fehlende Kenntnisse deinerseits. objsze muss ein klassenlokaler
Member sein.
namespace Test
{
    public partial class Form1 : Form
    {
        private Header objsze;

        public Form1()
        {
           InitializeComponent();
           objzse = new Header();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            // Hier will ich das Objekt "objzse" nutzen !
            // Compiler meldet: " the name objzse does not exist in the 
            // current context "
        }

}

Ich kann mich nur immer wieder wiederholen (und schön langsam
wird das ehrlich gesagt fad): Besorg dir Literatur.
Ich weiss nicht warum so viele Leute glauben sie könnten eine
Programmiersprache ohne entsprechende Unterlagen lernen.
In Deutschland brauchst du sogar einen Befähigungsnachweis ehe
man das erste mal alleine aufs Klo darf. Nur Babys produzieren
und Computer kaufen darf anscheinend jeder ohne irgendwas.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.