質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2422閲覧

配列で使ったvar型が何の型の代わりなのかを知りたい

abava

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/02/19 01:09

前提・実現したいこと

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を使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/02/19 01:19

> varが何の型の代わりになっているのかを知りたく思い質問しました. ん? その確認の為に次のコードをご自分で書いたのではないのですか? Console.WriteLine((fast).GetType());
abava

2020/02/19 01:22

System.Collections.Specialized.OrderedDictionary と出力されたのですがどこの部分が型なのか解かりませんでした. もしかしてこれら全体で一つの型なのでしょうか?
YAmaGNZ

2020/02/19 01:27

stringにしたときのエラーメッセージに出てますよね? 「型 'System.Collections.Specialized.OrderedDictionary' を型 'string' に暗黙的に変換できません。」って
退会済みユーザー

退会済みユーザー

2020/02/19 01:54

余計なお世話かもしれませんが、初心者ということだそうですので VS Code でなく Visual Studio を使うことをお勧めします。
Zuishin

2020/02/19 02:01

System.Collections.Specialized.OrderedDictionary で一つの型名です。 System.Collections.Specialized までは名前空間で、using System.Collections.Specialized と書くことでこの型を OrderedDictionary と略して呼ぶことができるようになります。
abava

2020/02/19 02:09

沢山の回答ありがとうございます. これからもC#の練習がんばります.
guest

回答1

0

ベストアンサー

こんにちは。

VSCode で C# Extension を利用しているなら、var にカーソルを合わせればその時推論された型が表示されます。

そして、このコードでは実際の型は OrderedDictionary となっています。代入しているオブジェクトを見れば、string ではないことは明らかです。

投稿2020/02/19 01:19

tamoto

総合スコア4228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abava

2020/02/19 01:26 編集

丁寧な回答ありがとうございます. なるほどvarにカーソルを合わせると詳細が出るのですね OrderedDictionaryという型を知ることが出来ました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問