3 Stimmen

Wie kann man eine Zeichenkette einer Klasse in einer anderen Klasse verwenden?

Ich habe einen Kurs in test.cs in dem ich einen String-Wert habe string user="testuser" . Ich möchte die test.cs's verwenden user Wert in einer anderen Klasse. Wie kann ich das tun?

8voto

Joey Punkte 329386

Erklären Sie die Zeichenkette für öffentlich:

public string user = "testuser";

Dann können Sie von einer anderen Klasse aus auf sie über

Test.user

Je nachdem, was Sie genau wollen, sollten Sie das Feld aber vielleicht schreibgeschützt machen:

public readonly string user = "testuser";

Oder Sie verwenden eine Eigenschaft, die an ein Hintergrundfeld gebunden ist:

public string User
{
    get { return this.user; }
}

In der Tat sind Eigenschaften der klassische Weg, um Informationen von außen zugänglich zu machen, außer in sehr wenigen, sehr speziellen Fällen. Öffentliche Felder werden im Allgemeinen nicht empfohlen.

Als Ameise in einem Kommentar erwähnt wurde, gibt es auch die Möglichkeit, ihn zu einer Konstante zu machen (vorausgesetzt, er ist tatsächlich ein konstanter Wert):

public const string user = "testuser";

0 Stimmen

Warum sollte man sie dann empfehlen, wenn sie nicht empfohlen werden?

2 Stimmen

Denn so funktioniert es am schnellsten und man muss am wenigsten verstehen. Ich könnte ein mehrseitiges Essay darüber schreiben, warum Felder schlecht sind und Eigenschaften verwendet werden sollten, aber der Auftraggeber muss wahrscheinlich nur eine Aufgabe erledigen oder es ist eine einmalige Sache, bei der es nicht einmal wichtig ist. Jemand, der eine solche Frage stellt, hat wahrscheinlich pas derzeit ein Framework oder eine Bibliothek entwerfen, die von Millionen von Kunden genutzt wird.

0 Stimmen

Vergessen Sie auch die Option "const" nicht! :)

5voto

Adriaan Stander Punkte 155899

Machen Sie ein öffentliches Grundstück.

Public string TestUser
{
 get { return testUser;}
}

3voto

Mez Punkte 2787

Sie sollten eine Eigenschaft von user erstellen und diese jeder anderen Klasse zur Verfügung stellen, die ihren Wert lesen oder schreiben möchte.

class MyClass
{
    private static  string user;

    public static string User
    {
        get { return user; }
        set { user = value; }
    }

}

class MyOtherClass
{
    public string  GetUserFromMyClass()
    {
        return MyClass.User;
    }
}

2voto

adrianos Punkte 1372
public class AClass
{
   // declarations
   private string _user = "testUser";

   // properties
   public string User { get { return this._user;} set { this._user = value; } }
}

und rufen dann Ihre Klasseneigenschaft auf, z. B.

AClass myClass = new AClass();
string sYak = myClass.User;

1voto

Sanket Punkte 463

Wie in den früheren Antworten vorgeschlagen, ist die Umwandlung von "user" in eine Eigenschaft die ideale Methode, um dies zu erreichen. Wenn Sie es jedoch direkt ausgeben wollen, sollten Sie static verwenden, um zu vermeiden, dass Sie ein Objekt dieser Klasse instanziieren müssen. Wenn Sie außerdem nicht möchten, dass die Demoklasse den Wert von "user" manipuliert, sollten Sie "user" auch als "readonly" deklarieren, wie unten beschrieben

public static readonly user="text user";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X