3

わかりました、C# で他の誰かによって書かれたこのプロトタイプがあり、それを Objective-C に入れようとしています。現在、私はまだ C# の正式な経験がないので、まだすべてを知っているわけではありません。最初の 3 つの変数が何であるかは理解していますが、4 行目と 5 行目 (c_data) が何をしているのかに問題があります。4 番目がメソッドを宣言してから 5 番目がそれを定義しているのか、それとも何が起こっているのか? ご協力いただきありがとうございます!

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

7 に答える 7

16

4 行目と 5 行目は C# のコンストラクターです。これらは、objective-c の [[c_data alloc] init] チェーンと同等です。C# では、コンストラクターが受け取るパラメーターに基づいて、コンストラクターをオーバーロードできます。これは、Objective-C で 2 つの異なる初期化メソッドを使用することと同じです。

@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
于 2009-07-13T15:20:05.860 に答える
2

4 行目はパラメーターなしのコンストラクターで、5 行目はパラメーターフル コンストラクターです。

于 2009-07-13T15:16:03.640 に答える
2

最初の c_data は、構造体のフィールドをデフォルト値 (値 -> 0.0、ラベル -> 0、ID -> 0) に初期化するデフォルトの引数なしのコンストラクターであり、2 番目の c_data は、インスタンスの値フィールドを渡されたパラメーターvalとその他のフィールドをデフォルト値に戻します。私が説明したのは、これら 2 つのコンストラクター呼び出しがインスタンスを初期化する方法です。

于 2009-07-13T15:18:26.147 に答える
1

4 番目と 5 番目は、新しいインスタンスを作成するときに c_data のインスタンスを初期化するために使用されるコンストラクターです。

于 2009-07-13T15:17:15.290 に答える
1

4 番目は、パラメーターをとらず、アクションも持たないクラスのコンストラクターを定義しています。5 番目は、パラメーターとして double 値を取り、クラス内部メンバー変数の値を渡された値に設定するクラスのコンストラクターを定義しています。値。

于 2009-07-13T15:17:36.473 に答える
1

4 行目と 5 行目は両方ともコンストラクターです。

4 行目は「デフォルト」のコンストラクターで、この場合は変数を初期化しません。

5 行目のコンストラクターは、value という名前の変数を、渡されたパラメーターに設定します。

于 2009-07-13T15:18:09.530 に答える
0

可能であれば、Objective-Cクラスに次の両方のメソッドがあるようなものです。

  • (id)init;
  • (id)initWithNumber:(NSNumber *)number;

コンストラクターと初期化子は類似物であり、見た目が少し異なります。

于 2009-07-20T08:24:29.387 に答える