最後の1文字の判定と取得 §
                     最後の1文字の判定はEndsWithメソッドを使うだけでできます。簡単です。
                     しかし、取得はちょっと面倒です。
                     LINQが使えない場合は長さを取得するLengthプロパティとインデクサの合わせ技で取得します。
                     LINQが使える場合はLastメソッド一発で取得できます。
                    
                    
                    最後の2文字の判定と取得 §
                     2文字になっても判定方法は変わりません。EndsWithメソッドで判定できます。
                     問題は取得方法で、これは大きく変わります。
                     LINQが使えない場合はSubstringメソッドで部分文字列を抜き出します。
                     LINQが使える場合は最後のn文字を取得するTakeLastメソッドを使いますが、TakeLastメソッドはシーケンスを返すAPIであって文字列を返しません。そこで、配列に変換してからString型のコンストラクタに渡して文字列に置き換えます。
                    
                    
                    罠の数々 §
                    
                      - 最後の1文字を取得するとき、インデックスを計算する際に付ける-1に注意。インデックスは0から数えるので、最後の1文字が文字列の長さマイナス1になる
- 同様に最後の2文字を取得するときの-2も注意
- Substringメソッドは第2引数を省略すると最後まで取得してくれる。本来なら第2引数の値は2であるが略しても同じ結果なので略してある
- Lastメソッドは取得するものが何もないと例外を発生させる。つまり空文字列に使うと必ず例外が起きる。LastOrDefaultメソッドを使えば例外が起きずに'\0'が返されるが、これでは最後の1文字が'\0'だったのか空文字列だったのか判定はできなくなる
- TakeLastメソッドは比較的実装が最近なので、少し古いバージョンだと利用できない可能性がある。互換の都合でフレームワークが古いプロジェクトが注意。(実装されているのは.NET Core系の比較的新しいバージョンのみ)
- LINQを使わない方法の方が高速に処理できる可能性がある。速度が重要な場合は注意しよう
- LINQを使わないで最後の2文字を取得する方法は、LINQを使う方法より短いが、-2というマジックナンバーが出現する弱点がある。TakeLastメソッドの引数の2は、【最後の2文字】の2なのでマジックナンバーではあるが読み取りやすい数字である
                    
                    参考リンク §
                    
                      String.EndsWith メソッド
                    
                    
                      String.Length プロパティ
                    
                    
                      String.Substring メソッド
                    
                    
                      Enumerable.Last メソッド
                    
                    
                      Enumerable.TakeLast メソッド
                    
                    
                    
                    リポジトリ §
                    
                      https://github.com/autumn009/cshowto
                    
                    
                    
                    StringEnd §
                    
                      using System;
                      using System.Linq;
                      
                      
                      class Program
                      {
                          static void Main()
                          {
                              const string src = "吉良瞳子";
                              // 最後の1文字が指定の文字か判定する
                              if (src.EndsWith("子")) Console.WriteLine("文字列の最後の1文字は【子】です。");
                              // LINQを使わない方法で最後の1文字を取得する
                              char ch1 = src[src.Length - 1];
                              Console.WriteLine($"文字列の最後の1文字は【{ch1}】です。");
                              // LINQを使う方法で最後の1文字を取得する
                              char ch2 = src.Last();
                              Console.WriteLine($"文字列の最後の1文字は【{ch2}】です。");
                      
                      
                              // 最後の2文字が指定の文字か判定する
                              if (src.EndsWith("瞳子")) Console.WriteLine("文字列の最後の2文字は【瞳子】です。");
                              // LINQを使わない方法で最後の2文字を取得する
                              string s1 = src.Substring(src.Length - 2);
                              Console.WriteLine($"文字列の最後の2文字は【{s1}】です。");
                              // LINQを使う方法で最後の2文字を取得する
                              string s2 = new string(src.TakeLast(2).ToArray());
                              Console.WriteLine($"文字列の最後の2文字は【{s2}】です。");
                          }
                      }
                     
                    
                    
                    実行結果
                    文字列の最後の1文字は【子】です。
                    文字列の最後の1文字は【子】です。
                    文字列の最後の1文字は【子】です。
                    文字列の最後の2文字は【瞳子】です。
                    文字列の最後の2文字は【瞳子】です。
                    文字列の最後の2文字は【瞳子】です。