回答編集履歴

2

最後の一文追加

2017/09/04 11:30

投稿

MMashiro
MMashiro

スコア2380

answer CHANGED
@@ -24,4 +24,7 @@
24
24
  `Split(new char[] { '\n' })`
25
25
 
26
26
  詳しくは下記URLを参考にしてみてください
27
- http://ufcpp.net/study/csharp/sp_params.html
27
+ http://ufcpp.net/study/csharp/sp_params.html
28
+
29
+ 因みになんで `'\n'` という簡単な指定を使わず `"\n"[0]` といった遠回しな使い方をするかは**わかりません**
30
+ (C++メインで使ってた人が書いたコードなのかな??)

1

説明補足

2017/09/04 11:30

投稿

MMashiro
MMashiro

スコア2380

answer CHANGED
@@ -5,23 +5,23 @@
5
5
  まず`string`型は`[n]`を指定することでそれぞれ`n文字目`を`char`型で取得することができます。
6
6
  その為 `"\n"[0]` は `'\n'` と同値になります。
7
7
 
8
- 次に何故`"\n"`はダメで`'\n' or "\n"[0]`がOKなのかと言いますと、
8
+ 次に何故引数に`"\n"`はダメで`'\n' or "\n"[0]`がOKなのかと言いますと、
9
9
  Split関数は第1引数に`string型`の配列か`char型`の配列に加え
10
10
  可変長引数(好きな数引数を指定できるもの)の`char型`を指定することができます。
11
11
 
12
12
  可変長引数とは
13
13
  `Split('a', 'b', 'c')`みたいに指定することができ、
14
- 内部的には `Split(new char[] { 'a', 'b', 'c' })` と定義してるような感覚です。
14
+ 内部的には `Split(new char[] { 'a', 'b', 'c' })` と変換してくれるような感覚です。
15
15
  そしてこの可変長引数はいくつでも指定できる≒引数の数が一つでもOKということです。
16
16
 
17
- それを踏まえるとこちらの指定は
17
+ それを踏まえるとこちらの指定は
18
18
  `Split("\n"[0]);`
19
19
 
20
+ このような指定の意味になり(`string`の最初の要素にアクセスして`char`取得)
20
21
  `Split('\n')`
21
- このような指定の意味になり(stringの最初の要素にアクセスしてchar取得)
22
22
 
23
+ 最終的にこの様な意味になります。(可変長引数から要素が一つの`char`型配列作成)
23
24
  `Split(new char[] { '\n' })`
24
- 最終的にこの様な意味になります。(可変長引数から配列作成)
25
25
 
26
26
  詳しくは下記URLを参考にしてみてください
27
27
  http://ufcpp.net/study/csharp/sp_params.html