質問するログイン新規登録

回答編集履歴

2

修正

2018/02/28 14:12

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -32,7 +32,7 @@
32
32
  ###追記
33
33
  特に意味はありませんが、LINQ と C#7 の新機能である型スイッチを使った方法です。
34
34
  なお `new byte[32]` については恐らくバッファを確保するつもりだっただけだと見てどちらのソースでも無視しています。
35
- 必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `.Concat()` を使って追加できます。
35
+ 必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `Enumerable.Repeat((byte)0, 32).Concat()` を使って追加できます。
36
36
 
37
37
  ```C#
38
38
  byte[] toByte()

1

追記

2018/02/28 14:12

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -27,4 +27,29 @@
27
27
  }
28
28
  return ret.ToArray();
29
29
  }
30
+ ```
31
+
32
+ ###追記
33
+ 特に意味はありませんが、LINQ と C#7 の新機能である型スイッチを使った方法です。
34
+ なお `new byte[32]` については恐らくバッファを確保するつもりだっただけだと見てどちらのソースでも無視しています。
35
+ 必要であれば上のソースでは `ret.AddRange(new byte[32])` 下のソースは `.Concat()` を使って追加できます。
36
+
37
+ ```C#
38
+ byte[] toByte()
39
+ {
40
+ return dictionary
41
+ .SelectMany<KeyValuePair<string, object>, byte>(x =>
42
+ {
43
+ switch (x.Value)
44
+ {
45
+ case null:
46
+ return Enumerable.Empty<byte>();
47
+ case string value:
48
+ return System.Text.Encoding.ASCII.GetBytes(value);
49
+ default:
50
+ return BitConverter.GetBytes((dynamic)x.Value);
51
+ }
52
+ })
53
+ .ToArray();
54
+ }
30
55
  ```