3 Stimmen

Hilfe beim Verstehen von C#-Code und bei der Portierung nach Objective-C

Ok, ich habe diesen Prototyp, der von jemand anderem in C# geschrieben wurde und ich versuche, es in Objective-C zu setzen. Nun, ich habe keine formale Erfahrung mit C# noch gehabt, so dass ich nicht alles über es noch wissen. Ich verstehe, was die ersten drei Variablen sind, aber ich habe Probleme damit, was die vierte und fünfte Zeile (c_data) tun. Wird in der vierten eine Methode deklariert und in der fünften definiert, oder was passiert da? Vielen Dank für Ihre Hilfe!

public class c_data {
    public double value;
    public int label;
    public int ID;
    public c_data() { }
    public c_data(double val) {
        value = val;
    }
}

16voto

LBushkin Punkte 124894

Die vierte und fünfte Zeile sind Konstruktoren in C#. Sie sind das Äquivalent zu den [[c_data alloc] init] Ketten in Objective-C. In C# können Sie Konstruktoren anhand der Parameter, die sie annehmen, überladen. Dies entspricht zwei verschiedenen Initialisierungsmethoden in Objective-C:

@interface CData : NSObject
{
   double value;
   int label;
   int ID;
}

@property double value;
@property int label;
@property int ID;

-(id) init;
-(id) initWithValue:(double)value;

@end

2voto

Andrew Hare Punkte 332190

Die 4. Zeile ist ein parameterloser Konstruktor und die 5. Zeile ist ein parameterreicher Konstruktor.

2voto

Vinay Sajip Punkte 89444

Der erste c_data-Konstruktor ist ein Standard-Konstruktor ohne Args, der die Felder der Struktur mit Standardwerten initialisiert (value -> 0.0, label -> 0, ID -> 0), und der zweite c_data ist ein Konstruktor, der das Feld value der Instanz auf den übergebenen Parameter setzt val und die anderen Felder auf ihre Standardwerte. Was ich beschrieben habe, ist, wie diese beiden Konstruktoraufrufe die Instanz initialisieren.

1voto

Mehmet Aras Punkte 5166

4. und 5. sind Konstruktoren, die verwendet werden, um die Instanz von c_data zu initialisieren, wenn Sie eine neue erstellen.

1voto

Paul Sonier Punkte 37609

Die vierte ist die Definition eines Konstruktors für die Klasse, der keine Parameter entgegennimmt und keine Aktionen ausführt, und die fünfte ist die Definition eines Konstruktors für die Klasse, der als Parameter einen Double-Wert entgegennimmt und die klasseninterne Mitgliedsvariable value auf den übergebenen Wert val setzt.

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