前提・実現したいこと
C#初心者です.
配列の練習をしていたのですが
17行目の配列の型の決定でstring型を使ったところ,エラーメッセージが出ました.
var型に変更したところエラーが出なくなったのですが ではvarが何の型の代わりになっているのかを知りたく思い質問しました.
用語が間違っていたら申し訳ありません.
発生している問題・エラーメッセージ
エラーメッセージ //型をstringにした場合 12-4.cs(17,20): error CS0029: 型 'System.Collections.Specialized.OrderedDictionary' を型 'string' に暗黙的に変換できません。 12-4.cs(28,7): error CS1502: 'System.Console.WriteLine(bool)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(28,25): error CS1503: 引数 1: 'メソッド グループ' から 'bool' に変換できません 12-4.cs(31,25): error CS1502: 'string.this[int]' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(31,30): error CS1503: 引数 1: 'string' から 'int' に変換できません 12-4.cs(32,31): error CS1502: 'string.this[int]' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(32,36): error CS1503: 引数 1: 'string' から 'int' に変換できません 12-4.cs(36,7): error CS1502: 'string.this[int]' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(36,12): error CS1503: 引数 1: 'string' から 'int' に変換できません 12-4.cs(37,25): error CS1502: 'string.this[int]' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(37,30): error CS1503: 引数 1: 'string' から 'int' に変換できません 12-4.cs(41,7): error CS1502: 'string.this[int]' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 12-4.cs(41,12): error CS1503: 引数 1: 'string' から 'int' に変換できません 12-4.cs(42,12): error CS1061: 'string' に 'Add' の定義が含まれておらず、型 'string' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 12-4.cs(44,7): error CS1501: 引数を 3 個指定できる、メソッド 'Insert' のオーバーロードはありません
該当のソースコード
C#
1//------------配列つかうなら1セットでいいと思う----------// 2// デフォルトだと、自動的に用意されます 3using System; 4// リスト、連想配列を使うために必要です 5using System.Collections.Generic; 6// 順序つき連想配列を使うために必要です 7using System.Collections.Specialized; 8// コンテナの便利機能を使うために必要です 9using System.Linq; 10//------------------------------------------------------// 11namespace LIST2 12{ 13 class MainClass 14 { 15 public static void Main(string[] args) 16 { 17 /*-----質問したい場所-----*/ 18 var fast =new OrderedDictionary 19 //string fast =new OrderedDictionary 20 { 21 //{"キーワード","データ"}, 22 {"朝ご飯","目玉焼き"}, 23 {"昼ご飯","ラーメン"}, 24 {"版ご飯","カレーライス"} 25 }; 26 27 Console.WriteLine( (fast).GetType() ); 28 29 /*要素数を数える*/ 30 Console.WriteLine(fast.Count); 31 32 /*要素を書き出す*/ 33 Console.WriteLine(fast["朝ご飯"]); 34 Console.WriteLine("{0}",fast["昼ご飯"]); 35 // Console.WriteLine(fast[0]); 36 37 /*データの変更*/ 38 fast["昼ご飯"] = "定食"; 39 Console.WriteLine(fast["昼ご飯"]); 40 41 /*データの追加*/ 42 /*末項に追加*/ 43 fast["間食"] = "なげわ"; 44 fast.Add("おやつ","よっちゃんイカ"); 45 /*指定箇所に追加*/ 46 fast.Insert(2,"早弁","お弁当"); 47 48 } 49 } 50}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
エディターはVScodeを使用
> varが何の型の代わりになっているのかを知りたく思い質問しました.
ん? その確認の為に次のコードをご自分で書いたのではないのですか?
Console.WriteLine((fast).GetType());
System.Collections.Specialized.OrderedDictionary
と出力されたのですがどこの部分が型なのか解かりませんでした.
もしかしてこれら全体で一つの型なのでしょうか?
stringにしたときのエラーメッセージに出てますよね?
「型 'System.Collections.Specialized.OrderedDictionary' を型 'string' に暗黙的に変換できません。」って
余計なお世話かもしれませんが、初心者ということだそうですので VS Code でなく Visual Studio を使うことをお勧めします。
System.Collections.Specialized.OrderedDictionary で一つの型名です。
System.Collections.Specialized までは名前空間で、using System.Collections.Specialized と書くことでこの型を OrderedDictionary と略して呼ぶことができるようになります。
沢山の回答ありがとうございます.
これからもC#の練習がんばります.
回答1件
あなたの回答
tips
プレビュー