Ich hatte ein kleines Programm geschrieben, weil es 2 Unterprogramme enthält, musste ich in dem Programm eine Klasse anlegen. Mir wurde in anderen Beiträgen bereits gesagt, dass ich die Klasse in eine andere Datei auslagern soll. Also habe ich im Menü Datei des Visual Studio “ Neu „ und dann „ Klasse in C#.“ ausgewählt. Das Visual Studio hat mir als Vorschlag für das Erstellen der Klasse in der neuen Datei den folgenden Code angezeigt.
von diesem Code habe ich nur das using System stehen lassen und den Rest durch den Code ersetzt, den ich im Hauptprogramm ausgeschnitten habe. Hier ist der Code der Datei class1.cs
Ich weis nicht ob der Code innerhalb der Datei class1.cs falsch eingefügt wurde.
Ich habe versucht die Datei am Ort : Source / repos / Projektname / Projektname und eine Ebene höher in Source / repos / Projektname abzuspeichern damit ich sie benutzen kann. Die beiden Orte, die ich zum Speichern ausgewählt hatte, unterscheiden sich aber nicht in ihrer Wirkung. Die neue Datei class1.cs ist nicht im Projektmappen Explorer sichtbar, und wenn die Klasse im Hauptprogramm fehlt, wird ihr Code nicht durch das Dokument class1.cs ersetzt, welches den Code der Klasse enthält.
Es könnte auch sein, dass ich damit das ganze funktioniert, zusätzlich im Hauptprogramm noch Code verändern müsste. RodFromGermany hat mir in dem Beitrag :Wie kann ich eine Funktion mit Rückgabewert in mein C# Programm integrieren ?
Ein Codebeispiel gezeigt, von dem ich vermute, dass es sich um Code für das Hauptprogramm handelt. Ich verstehe von dem Thema leider so wenig, dass ich nicht weis wie ich das Beispiel an mein Programm anpassen könnte. Für den Fall, dass der Code im Hauptprogramm verändert werden muss, könnte mir jemand zeigen, wie der Code im Hauptprogramm nach dem Auslagern der Klasse in eine andere Datei verändert werden müsste, damit alles weiterhin funktioniert ?
Hier ist der Code des Hauptprogramms.
Spoiler anzeigen
aufgrund des Datenumfangs Spoiler hinzugefügt und CodeTags korrigiert; bitte zukünftig darauf achten, das richtige CodeHighlighting zu verwenden ~VaporiZed[/b]
von diesem Code habe ich nur das using System stehen lassen und den Rest durch den Code ersetzt, den ich im Hauptprogramm ausgeschnitten habe. Hier ist der Code der Datei class1.cs
C#-Quellcode
- using System;
- public static class LokaleFunktionen
- {
- public static ulong Erg;
- public static ulong Fakultaet(int k)
- {
- if (k == 0)
- {
- return 1;
- }
- ulong Erg = 1;
- for (int i = 1; i <= k; i++)
- {
- Erg *= (ulong)i;
- }
- return Erg;
- }
- public static ulong Nueberk(int N, int k)
- {
- ulong Y, X, Nfak, Kfak;
- if (k == 0 & N >= 0)
- Y = 1;
- else
- {
- X = Fakultaet(N - k);
- Nfak = Fakultaet(N);
- Kfak = Fakultaet(k);
- Y = System.Convert.ToUInt64(Nfak / (double)(Kfak * X));
- }
- return Y;
- }
Ich weis nicht ob der Code innerhalb der Datei class1.cs falsch eingefügt wurde.
Ich habe versucht die Datei am Ort : Source / repos / Projektname / Projektname und eine Ebene höher in Source / repos / Projektname abzuspeichern damit ich sie benutzen kann. Die beiden Orte, die ich zum Speichern ausgewählt hatte, unterscheiden sich aber nicht in ihrer Wirkung. Die neue Datei class1.cs ist nicht im Projektmappen Explorer sichtbar, und wenn die Klasse im Hauptprogramm fehlt, wird ihr Code nicht durch das Dokument class1.cs ersetzt, welches den Code der Klasse enthält.
Es könnte auch sein, dass ich damit das ganze funktioniert, zusätzlich im Hauptprogramm noch Code verändern müsste. RodFromGermany hat mir in dem Beitrag :Wie kann ich eine Funktion mit Rückgabewert in mein C# Programm integrieren ?
Ein Codebeispiel gezeigt, von dem ich vermute, dass es sich um Code für das Hauptprogramm handelt. Ich verstehe von dem Thema leider so wenig, dass ich nicht weis wie ich das Beispiel an mein Programm anpassen könnte. Für den Fall, dass der Code im Hauptprogramm verändert werden muss, könnte mir jemand zeigen, wie der Code im Hauptprogramm nach dem Auslagern der Klasse in eine andere Datei verändert werden müsste, damit alles weiterhin funktioniert ?
Hier ist der Code des Hauptprogramms.
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Reflection.Emit;
- using
- System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Binominal
- {
- public partial
- class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- //An dieser Stelle hatte ich die Klasse ausgeschnitten die jetzt in der Datei class1.cs ist
- }
- private int N, i, R;
- private double P, var1, var2, var3, var4, Summe;
- private void button1_Click(object sender, EventArgs e)
- {
- {
- double[] ArrayB = new double[N + 1];
- double[]ArrayC = new double[N + 1];
- int K = 0;
- for (K = 0; K <= N; K++)
- {
- var2 = 1 - P;
- var3 = N - K;
- var1 = (double)Math.Pow(P, K);
- var4 = (double)Math.Pow(var2, var3);
- ArrayB[K] = LokaleFunktionen.Nueberk(N, K) * var1 * var4;
- Summe = Summe + ArrayB[K];
- ArrayC[K] = Summe;
- }
- {
- Ausg += " Fuer mindestens " + R.ToString() + " mal Erfolg liegt die Wahrscheinlichkeit bei : " + (1 - ArrayC[R - 1]).ToString()
- +
- Environment.NewLine;
- Ausg += " Fuer mehr als " + R.ToString() + " mal Erfolg liegt die Wahrscheinlichkeit bei : " + (1 - ArrayC[R]).ToString()
- +
- Environment.NewLine;
- Ausg += "
- Fuer hoechstens " + R.ToString() + " mal Erfolg liegt die Wahrscheinlichkeit bei : " + (ArrayC[R]).ToString()
- +
- Environment.NewLine;
- Ausg
- += "
- Fuer weniger als " + R.ToString() + " mal Erfolg liegt die Wahrscheinlichkeit bei : " + (ArrayC[R - 1]).ToString()
- +
- Environment.NewLine;
- Ausg += " Fuer genau "
- + R.ToString() + " mal Erfolg liegt die Wahrscheinlichkeit bei : " + (ArrayB[R]).ToString()
- +
- Environment.NewLine;
- }
- {
- label4.Text = Ausg;
- }
- {
- System.Object[] ItemObject = new System.Object[N + 1];
- for (int i = 0; i <= N; i++)
- {
- ItemObject[i]= " Die Wahrscheinlichkeit genau " + i +" mal Erfolg zu haben beträgt: " + ArrayB[i];
- }
- listBox1.Items.AddRange(ItemObject);
- }
- {
- System.Object[] ItemObject = new System.Object[N + 1];
- for (int i = 0; i <= N; i++)
- {
- ItemObject[i] = " K : " + i + " kumuliert : " + ArrayC[i];
- }
- listBox2.Items.AddRange(ItemObject);
- }
- }
- }
- private string Ausg;
- private void Form1_Load(object sender, EventArgs e)
- {
- {
- label4.Text = "Ein Rechner für die Binomialverteilung";
- label1.Text= @"
- Hier das N eingeben
- N= Anzahl der Versuche";
- label2.Text = @"Hier
- das P eingeben
- P = prozentuale Wahrscheinlichkeit
- als Zahl zwischen 0 und 1 ";
- label3.Text = @"Hier das K eingeben
- K
- = die gesuchte Anzahl
- der
- Treffer";
- button1.Text = " Start";
- }
- }
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- {
- bool Erfolg = Int32.TryParse(textBox1.Text, out int tbInt);
- if (Erfolg)
- {
- N = tbInt;
- }
- else
- {
- label4.Text = " Es wurde keine Zahl eingegeben ";
- }
- }
- }
- privatevoid textBox2_TextChanged(object sender, EventArgs e)
- {
- {
- P = double.Parse(textBox2.Text);
- }
- }
- private void textBox3_TextChanged(object sender, EventArgs e)
- {
- {
- bool Erfolg = Int32.TryParse(textBox3.Text, out int tbInt);
- if (Erfolg)
- {
- R = tbInt;
- }
- else
- {
- label4.Text = " Es wurde keine Zahl eingegeben ";
- }
- }
- }
- }
- }
aufgrund des Datenumfangs Spoiler hinzugefügt und CodeTags korrigiert; bitte zukünftig darauf achten, das richtige CodeHighlighting zu verwenden ~VaporiZed[/b]
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()