質問: new MyStruct[10]; /* * aへの何らかの処理 */ Array.Sort(a, (x, y) => x.$$ ); } } struct MyStruct { public int I; } } ``` 現在は13行目の`Array.Sort(a, (x, y) => x.`を入力し、$$の位置にカーソルがある状態です。 起こってほしいこと * 入力候補としてMyStructのメンバが表示。 実際に起きたこと * MyStructのメンバが入力候補に表示されず、別のクラス(恐らくArray)のメンバが入力候補として表示される。 ![画像の説明をここに入力](https://i.stack.imgur.com/HwAM7.png) Visual Studio 2019でMyStructのメンバを表示させるにはどのようにすればいいですか? Intellisenseを使わずに`Array.Sort(a, (x, y) => x.I.CompareTo(y.I));`と入力してもコンパイルエラーは出ませんでした。 試したこと 表示された * Visual Studio Community 2017 15.9.22を使用 * ReSharper 2020.1 EAP8をインストール 表示されない * .NET Framework 4.7.2を使う * 新規プロジェクトを作成 * Visual StudioをVisual Studio Installerからアンインストール->再インストール
回答: >Visual Studio 2019でMyStructのメンバを表示させるにはどのようにすればいいですか? に回答 ``` Array.Sort(a, (x, y) => x.I.CompareTo(y.I)); ``` ではなく ``` Array.Sort(a, (x, y) => x.I.CompareTo(y.I)); ``` と 型を明示すると インテリセンスが効くようですね。 `Array.Sort` の部分は ジェネリックメソッドになっていて `Array.Sort(T[] array, Comparison comparison)` なので `T` の型が `MyStruct` だよと明示的に教えてあげるといいみたいです。 ``` a = a.OrderBy(r => r.I).ToArray(); ``` なんて書く事もできます。 struct の場合は 無駄なコピーが多そうですが・・。