Это было полезно?

Решение

Вот классический пример из спецификации языка C # (раздел 10.5.5)

class Test
{
    static int a = b + 1;
    static int b = a + 1;
    static void Main() {
        Console.WriteLine("a = {0}, b = {1}", a, b);
    }
}

Это полностью действительная программа и в том виде, в котором она написана (a = 1, b = 2). Однако, если вы поменяете местами порядок полей, они также поменяют значения.

Другие советы

Да, это важно при взаимодействии с неуправляемым кодом.

Если поля инициализируются как часть объявления, они добавляются в конструктор (экземпляр или статический) в порядке их появления в файле.

Вы можете использовать (злоупотреблять?) порядок полей в качестве метаданных вашего класса, которые вы можете прочитать с помощью отражения.

например, если у вас есть класс, представляющий сетевой протокол с полями ID, PORT и XOR, в таком порядке, вы можете определить его как:

class MyProtocol {
    int ID;
    int PORT;
    int XOR;
}

Теперь предположим, что вы используете отражение для итерации полей протокола, для отправки по проводам. Порядок, возвращаемый GetProperties, будет таким, как вы определили, и вам не нужно было явно писать дополнительные метаданные.

Не уверен, если это хорошая идея, хотя зависеть от этого.

Я полагаю, что XmlSerializer сериализует элементы в порядке их появления в исходном файле.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top