Autor Beitrag
Sharpy78
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Do 13.12.07 20:42 
Hallo,

ich würde gerne um mein Programm übersichtlicher zu gestallten einige mittlerweile große Blöck in externe Dateien verlegen.

Dazu habe ich mir eine neue Datei erzeugt "Add Item" und dann "Code file".

Die Tools.cs Datei sehe ich nun doch wie kann ich hier nun meine Funktionen hinterlegen?

Kann mir jemand ein Beispiel aufzeigen wie das geht?

MfG Frank
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 13.12.07 20:50 
Hallo!

Nur Funktionen kannst Du in C# ja nicht auslagern, Du musst sie in eine Klasse packen.

Das heisst, entweder legst Du in der neuen Datei eine ganz neue Klasse an und fügst die Funktionen dort ein. Oder aber Du machst eine bestehende Klasse zu einer partiellen Klasse (Stichwort in der Hilfe: partial class) und lagerst einen Teil in Deine neue Datei aus.

Grüße
Christian

P.S.: Mit "Add Item" -> "Class" kannst Du schneller eine Datei mit einer Klasse anlegen. Wähle den Dateinamen dabei so, wie die Klasse heißen soll.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 13.12.07 20:52 
Ganz normal, wie du sonst auch Code schreibst. Nur musst du eventuell die using-Anweisungen neu angeben und noch den Namespace/Klasse. Wenn du eine neue Klasse in der neuen Datei erstellen möchtest, kannst du auch gleich "Add Item" und dann "Class" auswählen, dann erstellt dir Visual Studio das Grundgerüst von selbst.
Sharpy78 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Do 13.12.07 21:45 
Hallo,

super! Danke!

Das habe ich soweit also es in einer Class gepackt, sieht auch gut aus.
Wie greift man da nun drauf zu. *duck* aber wenn ich es erst einmal kappiert hab bin ich ruhig. ;-)

Die Klasse habe ich den Namen "Tools" gegeben, "MyHelloWorld" heist mein Projekt...

Die Class Datei sieht so aus...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyHelloWorld
{
    class Tools
    {
        public struct TestRmc
        {
            public Boolean Ok;
            public String RawData;
            public DateTime Time;
        }
    }
}



Using Tools;

Klappt nicht, das geht wohl anders?!


MfG Frank
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 13.12.07 22:08 
Hallo!

Wenn der Namespace überall in Deinem Projekt gleich ist, kannst Du auf die Klasse einfach wie auf jede andere Klasse zugreifen und musst nix in die using-Direktiven schreiben (bist ja schon im richtigen Namespace).

Könntest also sowas machen:
ausblenden C#-Quelltext
1:
2:
Tools.TestRmc myTest;
myTest.RawData = "foobar";


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Sharpy78 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Do 13.12.07 22:27 
Ok dank Dir! ;)

Nun wenn ich es richtig sehe ist die Klasse an "MyHelloWorld" gebunden?
Oder ist das Blödsinn und ich kann auch aus jedem anderen beliebigen Projekt auf meine extern lagerden Typen und Funktionen zugreifen oder geht das wieder etwas anders?

Ich möchte mir halt eine Datei basteln wo alles das reinkommt was ich immer mal wieder gebrauchen kann.

MfG Frank
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 13.12.07 22:58 
Nein, ist nicht gebunden. In anderen Projekten musst Du halt über "using" den Namespace "MyHelloWorld" einbinden und eine Referenz auf Dein Projekt setzen. Dann würde ich es allerdings "richtig" auslagern und ein eigenes Projekt, nämlich eine Bibliothek draus machen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 13.12.07 23:22 
Damit kein falscher Eindruck entsteht: ein struct ist ein normaler Typ, für den brauchst du keine Klasse außenrum, sondern kannst ihn direkt in den Namespace-Block schreiben. Diese Nested-Type-Syntax Tools.TestRmc ist bei C#-Entwicklern nicht gerade beliebt, wohl einfach zu lang ;) .
Deshalb sollten Nested Types nur innerhalb der umgebenden Klasse verwendet werden, ein sinnvolles Beispiel dafür ist die List<T>.Enumerator-Klasse: Da wohl niemand direkt diese Klasse referenzieren/instanzieren wird, braucht man nie den umständlichen Namen, als Nested Class hat Enumerator aber den Vorteil, auf nicht-öffentliche Member wie List<T>._version zugreifen zu können.