Помогите с пониманием кода C # и портированием на Objective-C - PullRequest
3 голосов
/ 13 июля 2009

Хорошо, у меня есть этот прототип, который был написан кем-то еще на 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 ]

16 голосов
/ 13 июля 2009

Четвертая и пятая строки - конструкторы в C #. Они эквивалентны цепочкам [[c_data alloc] init] в target-c. 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
2 голосов
/ 13 июля 2009

Первые c_data - это конструктор по умолчанию без аргументов, который инициализирует поля структуры значениями по умолчанию (значение -> 0.0, метка -> 0, ID -> 0), а второй c_data - это конструктор, который устанавливает поле значения экземпляр переданного параметра val, а остальные поля - их значения по умолчанию. Я описал, как эти два вызова конструктора инициализируют экземпляр.

2 голосов
/ 13 июля 2009

4-я строка - конструктор без параметров, а 5-я строка - конструктор с параметрами.

1 голос
/ 13 июля 2009

4-я и 5-я строки являются конструкторами.

Четвертая строка - это конструктор по умолчанию, который в этом случае не инициализирует переменные.

Конструктор в 5-й строке устанавливает переменную с именем value для параметра, переданного в.

1 голос
/ 13 июля 2009

Четвертый определяет конструктор для класса, который не принимает параметров и не имеет действий, а пятый - конструктор для класса, который принимает в качестве параметра двойное значение и который устанавливает значение переменной-члена внутреннего класса равным переданное значение val.

1 голос
/ 13 июля 2009

4-й и 5-й являются конструкторами, которые используются для инициализации экземпляра c_data при его обновлении.

0 голосов
/ 20 июля 2009

Если можно, это похоже на наличие обоих следующих методов в классе Objective-C:

  • (ID) INIT;
  • (id) initWithNumber: (NSNumber *) номер;

Конструкторы и инициализаторы являются аналогами, они выглядят немного иначе.

...