Laden...

Auf Objekt in Klasse zugreifen

Erstellt von UnoDosTres vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.494 Views
U
UnoDosTres Themenstarter:in
27 Beiträge seit 2007
vor 16 Jahren
Auf Objekt in Klasse zugreifen

Hallo,

habe eine Klasse die z.B. so ausschaut:


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    class dbwork
    {
        string datei = Application.StartupPath + "\\domains.mdb";
    
    }
}

  1. Wie kann ich auf das Objekt datei zugreifen? Das Programm kennt den String nicht. Obwol die Klasse dem Projekt zugeordnet ist.

  2. Er sagt mir immer ein Fehler bei Application... das erkennt er nicht sobald diese Anweisung in der Klasse ist. In der Hautform geht es.

R
402 Beiträge seit 2005
vor 16 Jahren

hi,ich glaube,du solltest dir mal das galileo-open-book durchlesen! da es hier ganz klar daran scheitert,dass du nicht weißt,dass man zuerst eine objekt(instanz) einer klasse erstellen muss, bevor man auf die Instanz-Member der Klasse zugreifen kann.
abermal abgesehen davon, muss unter References auch die System.Windows.Forms Reference gesetzt sein und du solltest using System.Windows.Forms irgendwo am Anfang der Datei haben, da er sonst Application.StartupPath nicht finden wird, natürlich kannst du anstatt dem using auch System.Windows.Forms.Application.StartupPath schreiben!!

um ein Objekt von deiner Klasse zu erstellen schreibst du außerhalb dieser Klasse zb in der Main-Methode():

dbwork myobj = new dbwork();

und dann kannst du mittels:

myobj.datei

auf den Wert von datei zugreifen!

lg rizi

W
25 Beiträge seit 2006
vor 16 Jahren
Da fehl noch einiges...

Wenn schon, dann in etwa so:


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    public class DbWork
    {
       // member 
       private string datei = Application.StartupPath + "\\domains.mdb";
       // properties
       public string DatenbankPfad
       {
            get {return this.datei;}
       }
    
    }
}

// Aufruf:
DbWork dbwork = new DbWork();
string meinedatei = dbwork.DatenbankPfad;

Generell solltest Du aber überlegen, solche Einstellungen in die dafür vorgesehene app.settings - Datei abzulegen.
Hier ist eine gute Einführung in C#, die auch das Thema Felder, Klassen, Properties usw. behandelt.

http://www.galileocomputing.de/openbook/visual_csharp/

Mit freundlichen Grüßen

Walter Grimm

S
125 Beiträge seit 2005
vor 16 Jahren

Hallo.

Erstmal ist das eine sehr grundlegende Frage und es scheint so als wäre bei dir das Grundwissen zum Thema OOP (objektorientierte Programmierung) nicht vorhanden. (Sorry falls ich mich irre) Ich kann an dieser Stellen nur folgende Seiten empfehlen http://www.galileocomputing.de/openbook/csharp/
http://www.galileocomputing.de/openbook/oo/

  1. Wie kann ich auf das Objekt datei zugreifen? Das Programm kennt den String nicht. Obwol die Klasse dem Projekt zugeordnet ist.

Hast du eine Instanz der Klasse erstellt???


using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace domination
{
    class DeineAnwendung
    {
        dbwork name = new dbwork();
    
    }
} 

Es sieht so aus als würde der Konstruktor fehlen.


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    class dbwork
    {
        string datei = Application.StartupPath + "\\domains.mdb";
    
        // default Konstruktor
        public dbwork()
        {

        }
    }
} 


Eine Möglichkeit wäre es den string auf public zu setzen:


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    class dbwork
    {
        public string datei = Application.StartupPath + "\\domains.mdb";
    
    }
} 

oder über die "get" und "set"-Direktive zu arbeiten:


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    class dbwork
    {
        string datei = Application.StartupPath + "\\domains.mdb";
    
        public string Datei
        {
            get{return datei;} // öffentlicher Zugriff lesen
            set{datei = value;} // öffentlicher Zugriff schreiben
        }
    }
} 

dann kannst du über so darauf zu greifen:


using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace domination
{
    class DeineAnwendung
    {
        dbwork name = new dbwork();
        Console.WriteLine(name.Datei); // gibt den string "Datei" auf der Konsole aus
    }
}

  1. Er sagt mir immer ein Fehler bei Application... das erkennt er nicht sobald diese Anweisung in der Klasse ist. In der Hautform geht es.

Besser immer eine genauere Beschreibung bzw. die Exception oder Fehlermeldung beifügen.

Falls ich das jetzt nicht falsch verstanden habe, dann empfehle ich dir die Grundlagen anzueignen, sollten dabei Probleme auftreten, ist hier jeder gerne bereit zu helfen, wie du ja siehst. 😉

Mfg

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************

U
UnoDosTres Themenstarter:in
27 Beiträge seit 2007
vor 16 Jahren

Hallo,

ja da habt ihr absolut recht. Mir fehlen halt noch die Grundlagen. Bin seit 3 oder 4 Tagen dabei C# zu lernen. Vielen Dank für die vielen Infos.

Gruss
UnoDosTres