Я могу инициализировать строку константы от символа константы в C#?

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

Примерно так:

Штакблиц

import {
  Component
} from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  data = [{
      "Bal Vivah": 1,
      "Type": 0,
      "districts": "East District"
    },
    {
      "Bal Vivah": 1,
      "Type": 0,
      "districts": "West District"
    },
    {
      "Bal Vivah": 1,
      "Type": 0,
      "districts": "North District"
    }
  ]

  columns: string[] = ["districts"];

  constructor() {
    // get the columns from the data
    if (this.data) {
      var dataObject = this.data[0];
      for (var property in dataObject) {
        if (property != "districts" && dataObject.hasOwnProperty(property)) {
          this.columns.push(property);
        }
      }
    }
  }
}

      
{{column}}
{{columnData[column]| json}}

Примечание: я изменил ваши данные, чтобы они были действительными json.

7
задан Hosam Aly 4 January 2009 в 08:53
поделиться

3 ответа

Из спецификации языка C# (§ 17.3 и 14.16):

17.3 Константы

Константа является участником класса, который представляет постоянную величину: значение, которое может быть вычислено во время компиляции.

и

14.16 Константные выражения

Константное выражение является выражением, которое должно быть полностью оценено во время компиляции. Где выражение требуется, чтобы быть постоянным, это обозначается в грамматике при помощи константного выражения. [...] следующие конструкции разрешены в константных выражениях:

  • Литералы (включая пустой литерал)
  • Ссылки на членов константы класса и типов структуры.
  • Ссылки на членов перечисляемых типов.
  • Заключенные в скобки подвыражения, которые являются самостоятельно константными выражениями.
  • Выражения приведения типа, если целевой тип является одним из упомянутых выше типов.
  • Предопределенный, проверенный и неконтролируемый, +, –!, и ~ унарные операторы.
  • Предопределенный +, – *,/, %, <<>>, и, |, ^, &&, ||, ==! =, <>, <=, и> = бинарные операторы, если каждый операнд имеет упомянутый выше тип.
  • ?: условный оператор.
  • выражения sizeof, если неуправляемый тип является одним из типов, указанных в §14.5.12.
  • выражения значения по умолчанию, если тип является одним из типов, упомянутых выше или типа, являются ссылочным типом или параметром типа, который, как известно, является ссылочным типом (§25.7).

Следующие преобразования разрешены в константных выражениях:

  • Преобразования идентификационных данных
  • Числовые преобразования
  • Преобразования перечисления

Другой способ достигнуть, что Вы хотите, состоит в том, чтобы использовать статического участника только для чтения. Участники только для чтения оценены во времени выполнения, не во время компиляции. Поэтому можно использовать ToString () метод.

private static readonly EscapeString = EscapeChar.ToString();

Примечание: Поскольку поле только для чтения может быть инициализировано или в объявлении или в конструкторе класса, поля только для чтения могут иметь различные значения в зависимости от используемого конструктора.

Вот хорошая статья о различиях между константой и участниками только для чтения.

8
ответ дан 6 December 2019 в 14:10
поделиться

Я не вижу способа сделать его, который я согласовываю, определенная жалость - но сделайте Вас, действительно нуждаются в нем, чтобы быть a const вместо static readonly? У последнего будет почти та же семантика.

5
ответ дан 6 December 2019 в 14:10
поделиться

Единственными путями я могу думать (оба не идеальные):

const string EscapeString = "\\";
private static readonly EscapeString = EscapeChar.ToString();

Или Вы могли просто продолжить работать с символьной версией и ToString () его каждый раз, когда Вам нужна строковая версия :)

1
ответ дан 6 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

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