Ich versuche Passing bin der m_paths Wert aus der Klasse zu übergeben: ExtractDescriptorsForm.Cs zu VisualizeFrom.Cs .. Dies ist, wie die Variablen in ExtractDescriptorsForm.Cs definiert:Variablen aus Cs-Datei an einem anderen Cs-Datei in C#
namespace MediaLab.TopSurf
{
public partial class ExtractDescriptorsForm : Form
{
// list of paths that point directly at images, or at
// directories that contain images
List<string> m_paths;
public List<string> Paths { get { return m_paths; } }
......}}
Was schrieb ich in VisualizeForm.Cs:
List<string> j = ExtractDescriptorsForm.m_paths;
der Fehler ist:
eine Objektreferenz für den nicht-statisches Feld, m erforderlich ist ethode oder Eigenschaft ‚MediaLab.TopSurf.ExtractDescriptorsForm.m_paths‘
Sie könnten vielleicht ein besseres Verständnis für den Unterschied zwischen einer Klasse und einer Instanz der Klasse entwickeln. Zum Beispiel könnte eine Klasse "Person" sein und eine Instanz der Klasse könnte "Person joe = new Person()" sein. Die Variable 'joe' enthält nun eine * Referenz * auf eine Instanz der Person-Klasse. Wenn Sie diese Unterscheidung einmal verstanden haben, wird das Konzept von * statisch * viel mehr Sinn machen. – phoog
Diese Variable ist nicht statisch, daher benötigen Sie eine Objektreferenz. Ich nehme an, Sie haben ein 'var thing = new ExtractDescriptorsForm()' irgendwo? Um zu der Variablen in diesem Fall zu gelangen, würden Sie 'List j = thing.m_paths;' edit: Das heißt, wenn Sie es öffentlich machen. Für den Code gebucht 'List j = thing.Paths;' sollte funktionieren. –
Quantic
Auch Variablen sind standardmäßig 'privat', was bedeutet, dass selbst wenn Sie eine Instanz der Klasse hätten, Sie nicht in der Lage wären, 'm_pfade' zu referenzieren. Sie müssten es in "public" ändern - aber das eröffnet eine ganz neue Dose Würmer, aber es gibt bereits eine "öffentliche" Eigenschaft, die Sie verwenden sollten. – ChrisF