c # превращение List <char>в строку и отображение в метке в приложении Windows Form - PullRequest
1 голос
/ 18 июня 2019

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

public Form1()
{
    InitializeComponent();
    Game.NewPhrase();
    phraseLbl.Text = Game.code.ToString();
}

Однако в поле метки должны появиться случайные символы с надписью System.Collections.Generic.List'1[System.Char].Я не уверен, что это говорит мне.

Ответы [ 2 ]

3 голосов
/ 18 июня 2019

Просто используйте string конструктор, принимающий массив char:

phraseLbl.Text = new string(Game.code.ToArray());
2 голосов
/ 18 июня 2019

Вы также можете использовать string.Concat

var cs = new char[] {'s','f','f'};
Console.WriteLine(string.Concat(cs));

выход

sff

Однако именно поэтому вы не используете string.Concat

Тесты

Протестировано 1000 раз по каждой шкале (размер массива char), мусор перед каждым запуском и 75% лучших результатов подсчитано

┌──────────────────┬────────────────────────────────────────────┐
│        Test Mode │ Release (64Bit)                            │
│   Test Framework │ .NET Framework 4.7.1 (CLR 4.0.30319.42000) │
╞══════════════════╪════════════════════════════════════════════╡
│ Operating System │ Microsoft Windows 10 Pro                   │
│          Version │ 10.0.17763                                 │
├──────────────────┼────────────────────────────────────────────┤
│       CPU System │ Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz    │
│  CPU Description │ Intel64 Family 6 Model 158 Stepping 9      │
├──────────────────┼──────────┬──────────────────┬──────────────┤
│  Cores (Threads) │ 4 (8)    │     Architecture │ x64          │
│      Clock Speed │ 3600 MHz │        Bus Speed │ 100 MHz      │
│          L2Cache │ 1 MB     │          L3Cache │ 8 MB         │
└──────────────────┴──────────┴──────────────────┴──────────────┘

Результаты

┌── Standard input ────────────────────────────────────────────────────────────┐
│ Value  │    Average │    Fastest │    Cycles │ Garbage │ Test │         Gain │
├── Scale 10 ───────────────────────────────────────────────────── 0.103 sec ──┤
│ new    │   1.492 µs │ 800.000 ns │   8.408 K │ 0.000 B │ Base │       0.00 % │
│ Concat │   3.128 µs │   1.600 µs │  14.210 K │ 0.000 B │ Pass │    -109.65 % │
├── Scale 100 ──────────────────────────────────────────────────── 0.095 sec ──┤
│ new    │   1.501 µs │ 800.000 ns │   8.474 K │ 0.000 B │ Base │       0.00 % │
│ Concat │   3.772 µs │   2.700 µs │  16.621 K │ 0.000 B │ Pass │    -151.23 % │
├── Scale 1,000 ────────────────────────────────────────────────── 0.098 sec ──┤
│ new    │   1.932 µs │ 800.000 ns │   9.949 K │ 0.000 B │ Base │       0.00 % │
│ Concat │  18.724 µs │  15.400 µs │  70.817 K │ 0.000 B │ Pass │    -868.93 % │
├── Scale 10,000 ───────────────────────────────────────────────── 0.123 sec ──┤
│ new    │   4.843 µs │   1.700 µs │  21.343 K │ 0.000 B │ Base │       0.00 % │
│ Concat │ 143.127 µs │ 140.900 µs │ 518.406 K │ 0.000 B │ Pass │  -2,855.53 % │
├── Scale 100,000 ──────────────────────────────────────────────── 0.306 sec ──┤
│ new    │  14.013 µs │  13.900 µs │  53.592 K │ 0.000 B │ Base │       0.00 % │
│ Concat │   1.421 ms │   1.378 ms │   5.118 M │ 0.000 B │ Pass │ -10,041.75 % │
└──────────────────────────────────────────────────────────────────────────────┘

Код

[Test("new", "", true)]
public string Test1(char[] input, int scale)
{
   return new string(input);

}

[Test("Concat", "", false)]
public string Test2(char[] input, int scale)
{
   return string.Concat(input);
}
...