Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Auf Objekt in Klasse zugreifen
UnoDosTres
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

Auf Objekt in Klasse zugreifen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
rizi
myCSharp.de - Member



Dabei seit:
Beiträge: 406

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Walter Grimm
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Wuppertal

Da fehl noch einiges...

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
SGT_BOB
myCSharp.de - Member



Dabei seit:
Beiträge: 125
Herkunft: Aachen

beantworten | zitieren | melden

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/
Zitat
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
    }
}
Zitat
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.

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>_
*************************
private Nachricht | Beiträge des Benutzers
UnoDosTres
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers