Help with understanding C# code and porting to Objective-C

送分小仙女□ 提交于 2019-12-04 04:36:03

问题


Ok, I have this prototype that was written by someone else in C# and I'm trying to put it into Objective-C. Now, I haven't had any formal experience with C# yet, so I don't know everything about it yet. I understand what the first three variables are, but I'm running into problems with what the fourth and fifth lines (c_data) are doing. Is the fourth declaring a method and then the fifth defining it or what's happening? Thanks for your help!

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

回答1:


The fourth and fifth lines are constructors in C#. They are the equivalent to [[c_data alloc] init] chains in objective-c. C# allows you to overload constructors based on the parameters they take. This is equivalent to having two different initialization methods 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



回答2:


The 4th line is a parameterless constructor and the 5th line is a parameterfull constructor.




回答3:


The first c_data is a default no-args constructor which initialises the structure's fields to default values (value -> 0.0, label -> 0, ID -> 0) and the second c_data is a constructor which sets the value field of the instance to the passed-in parameter val and the other fields to their default values. What I've described is how those two constructor calls initialise the instance.




回答4:


4th and 5th are constructors that are used to initialize the instance of c_data when you new up one.




回答5:


The fourth is defining a constructor for the class which takes no parameters and has no actions, and the fifth is defining a constructor for the class which takes as a parameter a double value and which sets the class-internal member variable value to the passed value val.




回答6:


The 4th and 5th lines are both constructors.

The 4th line one is the "default" constructor, which in this case does not initialize any variables.

The constructor on the 5th line sets the variable named value to the parameter passed in.




回答7:


If I may, it is rather like the having both the following methods in an Objective-C class:

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

Constructors and initializers are analogues, they just look a little different.



来源:https://stackoverflow.com/questions/1120067/help-with-understanding-c-sharp-code-and-porting-to-objective-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!