Python ctype рекурсивные структуры

Я отсутствую оператор With Visual Basic при перемещении в C#, таким образом, здесь это идет:

public static void With(this T obj, Action act) { act(obj); }

И вот то, как использовать его в C#:

someVeryVeryLonggggVariableName.With(x => {
    x.Int = 123;
    x.Str = "Hello";
    x.Str2 = " World!";
});

Сохраняет большой ввод!

Сравнивают это с:

someVeryVeryLonggggVariableName.Int = 123;
someVeryVeryLonggggVariableName.Str = "Hello";
someVeryVeryLonggggVariableName.Str2 = " World!";

вставляет codeplex проект

9
задан Brian R. Bondy 23 August 2009 в 21:04
поделиться

2 ответа

Вы почти наверняка захотите объявить next_command как указатель. Создание структуры, которая содержит саму себя, невозможно (на любом языке).

Я думаю, что это то, что вам нужно:

class EthercatDatagram(Structure):
    pass
EthercatDatagram._fields_ = [
    ("header", EthercatDatagramHeader),
    ("packet_data_length", c_int),
    ("packet_data", c_char_p),
    ("work_count", c_ushort),
    ("next_command", POINTER(EthercatDatagram))]
15
ответ дан 4 December 2019 в 13:49
поделиться

Вы должны будете получить доступ к _fields_ статически после того, как создадите его.

class EthercatDatagram(Structure)
  _fields_ = [...]

EthercatDatagram._fields_.append(("next_command", EthercatDatagram))
-1
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: