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

好吧,我有这个原型是由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; } } 

第四行和第五行是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 

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

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

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

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

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

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

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

如果可以的话,它更像是在Objective-C类中同时使用以下两种方法:

  • (ID)初始化;
  • (id)initWithNumber:(NSNumber *)号码;

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