帮助理解C#代码并移植到Objective-C

时间:2009-07-13 15:14:00

标签: c# objective-c methods declaration porting

好的,我有这个原型是由C#中的其他人编写的,我试图把它放到Objective-C中。现在,我还没有任何关于C#的正式经验,所以我还不知道它的一切。我理解前三个变量是什么,但我遇到第四行和第五行(c_data)正在做的问题。是第四个声明一种方法,然后第五个定义它或正在发生什么?谢谢你的帮助!

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

7 个答案:

答案 0 :(得分:16)

第四行和第五行是C#中的构造函数。它们相当于objective-c中的[[c_data alloc] init]链。 C#允许您根据构造函数的参数重载构造函数。这相当于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

答案 1 :(得分:2)

第4行是无参数构造函数,第5行是参数全构造函数。

答案 2 :(得分:2)

第一个c_data是默认的no-args构造函数,它将结构的字段初始化为默认值(值 - > 0.0,标签 - > 0,ID - > 0),第二个c_data是一个构造函数,用于设置实例的值字段到传入参数val,其他字段为默认值。我所描述的是这两个构造函数调用如何初始化实例。

答案 3 :(得分:1)

第4和第5个是构造函数,用于在新建时初始化c_data实例。

答案 4 :(得分:1)

第四个是为类定义一个没有参数且没有动作的构造函数,第五个是定义类的构造函数,它将参数作为double值并将class-internal成员变量值设置为传递的值val。

答案 5 :(得分:1)

第4行和第5行都是构造函数。

第4行是“默认”构造函数,在这种情况下不会初始化任何变量。

第5行的构造函数将名为value的变量设置为传入的参数。

答案 6 :(得分:0)

如果可以,那就像在Objective-C类中同时使用以下两种方法:

  • (ID)INIT;
  • (id)initWithNumber:(NSNumber *)number;

构造函数和初始化函数是类似的,它们看起来有点不同。