3

好的,我有这个由其他人用 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;
    }
}
4

7 回答 7

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
于 2009-07-13T15:20:05.860 回答
2

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

于 2009-07-13T15:16:03.640 回答
2

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

于 2009-07-13T15:18:26.147 回答
1

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

于 2009-07-13T15:17:15.290 回答
1

第四个是为类定义一个没有参数且没有动作的构造函数,第五个是为类定义一个构造函数,它接受一个双精度值作为参数并将类内部成员变量的值设置为传递的值瓦尔。

于 2009-07-13T15:17:36.473 回答
1

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

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

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

于 2009-07-13T15:18:09.530 回答
0

如果可以的话,这就像在 Objective-C 类中同时拥有以下两种方法:

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

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

于 2009-07-20T08:24:29.387 回答