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


von Bernd (Gast)


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 !!

von Bernd (Gast)


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

von Karl H. (kbuchegg)


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.

von Bernd (Gast)


Lesenswert?

OK...auf eine Neues.
Hier die beiden Programmteile...

Quelltext: Programm.cs
1
namespace Test
2
{
3
    public partial class Form1 : Form
4
    {
5
        public Form1()
6
        {
7
           InitializeComponent();
8
           Header objzse = new Header();
9
        }
10
}

Quelltext: Header.cs
1
namespace Test
2
{
3
    public class Header
4
    {  
5
       // noch ohne Inhalt 
6
    }
7
}

Ich das so besser ?

von Karl H. (kbuchegg)


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?

von Bernd (Gast)


Lesenswert?

ok... so habe ich den Konstruktor ins Leben gerufen..

Quelltext: Header.cs
1
namespace Test
2
{
3
    public class Header
4
    {  
5
       public Header()      // Konstruktor
6
       {
7
         // ohne Inhalt 
8
       }
9
10
    }
11
}


Quelltext: Programm.cs
1
namespace Test
2
{
3
    public partial class Form1 : Form
4
    {
5
        public Form1()
6
        {
7
           InitializeComponent();
8
           Header objzse = new Header();
9
        }
10
11
        private void Form1_Load(object sender, EventArgs e)
12
        {
13
14
            // Hier will ich das Objekt "objzse" nutzen !
15
            // Compiler meldet: " the name objzse does not exist in the 
16
            // current context "
17
        }
18
19
}

Was kann das sein ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sieh Dir mal den Gültigkeitsbereich von "objzse" an.

von Compy (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


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.
1
namespace Test
2
{
3
    public partial class Form1 : Form
4
    {
5
        private Header objsze;
6
7
        public Form1()
8
        {
9
           InitializeComponent();
10
           objzse = new Header();
11
        }
12
13
        private void Form1_Load(object sender, EventArgs e)
14
        {
15
16
            // Hier will ich das Objekt "objzse" nutzen !
17
            // Compiler meldet: " the name objzse does not exist in the 
18
            // current context "
19
        }
20
21
}

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.