static bool Menu() { if (_files == null) { _files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).Where(s => Path.GetExtension(s) == ".mid").Select(Path.GetFileName).ToArray(); } Clear(); if (!_useAutoPlay || _ptr == -1) { foreach (ValueTuple <string, int> fs in _files.Select((s, i) => new ValueTuple <string, int>(s, i))) { WriteLine($"{fs.Item2})\t{fs.Item1}"); } WriteLine(); Write("再生するものを選んでください(-1で終了) >"); int a; while (!int.TryParse(ReadLine(), out a) || a >= _files.Length || a < 0) { if (a == -1) { return(false); } Write("ちゃんと選べ。 >"); } _ptr = a; } if (_ptr >= _files.Length) { _ptr = 0; } try { if (_files.Length > 0) { _player.Play(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _files[_ptr]), _useAutoPlay ? 2 : 2, 8000); } } catch (Exception ex) { Debug.WriteLine($"ERROR!!! {ex}"); } if (_useAutoPlay) { _ptr++; } return(true); }