今回のテーマ
こんばんは、かっぱちゃんです!!
ココがポイント
今回のテーマはGetMethodメソッドを使用して、Containsメソッドが上手く取得できない場合の対処方法です。
今回は私もハマった忘備録でもあるので、短いです!
では、早速みていきましょう!!

GetMethodメソッドの使い方
GetMethodメソッドを使用すると、指定したメソッドを取得することが出来ます。
可変のラムダ式を作る時に役に立つんですよね。後日記事にしたいと思います。
下記はGetMethodでstring型のメソッド「ToLower」メソッドを取得した時の例です。
1 2 3 4 5 6 7 8 9 10 11 |
using System; using System.Reflection; class Program { static void Main(string[] args) { MethodInfo ToLower = typeof(string).GetMethod("ToLower", Type.EmptyTypes); Console.WriteLine(ToLower.Name); } } |
出力結果
ToLower
何も面白くないソースコード結果ですみません 😥
これを同じようにString型のContainsメソッドを取得してみます。
C#のエンジニアであれば、絶対買ってほしい本2選
C#の初心者にオススメ!基本はこの本で抑えよう!
Linqの使い方が沢山載っている。中級者以上の方にオススメ!
同じようにString型のContainsメソッドを取得してみる
Containsメソッドを取得してみましょう。何も考えずに同じように指定すると・・・
1 2 3 4 5 6 7 8 9 10 11 |
using System; using System.Reflection; class Program { static void Main(string[] args) { MethodInfo Contains = typeof(string).GetMethod("Contains",Type.EmptyTypes); Console.WriteLine(Contains.Name); } } |
出力結果 System.NullReferenceException
Nullとなりました。
この理由はToLowerメソッドは引数が無いのに対して、Containsはstring型を引数として指定しなければならないからです!
例としては下記のようなイメージですね!!
1 2 3 4 5 6 7 8 9 10 |
using System; class Program { static void Main(string[] args) { Console.WriteLine("AA".ToLower()); //←引数が0だからType.EmptyTypesで良い。 Console.WriteLine("AA".Contains("A"));//←引数の指定が必要。 } } |
因みに第2引数を指定しないと、下記のエラーが出てしまいます。
System.Reflection.AmbiguousMatchException
これは、Containsメソッドには、char型とstring型を引数として指定出来るので、どちらを取得すればいいのか分からないよ!ということです。
なので、引数がどの型なのか具体的に指定してあげましょう!指定方法は下記のソースコードです!
この指定方法が分かるまで本当に時間がかかった・・・。汗
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; using System.Reflection; class Program { static void Main(string[] args) { MethodInfo strContains = typeof(string).GetMethod("Contains", new Type[] { typeof(string) }); MethodInfo charContains = typeof(string).GetMethod("Contains", new Type[] { typeof(char) }); Console.WriteLine(strContains.Name); Console.WriteLine(charContains.Name); } } |
command
Contains
Contains
無事に指定できましたね^^
まとめ
今回の記事は色々調べても情報が全然なかったので、私の忘備録としても記事とさせて頂きました。
この記事の流れで可変のラムダ式についても触れていけたらなと思います!!
今回の記事がお役にたてたなら光栄です!!
是非、他の記事も役に立つと思うので、みてください!!!

プログラミング能力を上げたい方は是非オンラインのプログラミング教室も検討してみてくださいね!!
一人で独学をするよりもプロからオンラインでプログラミングを教えてもらった方が10倍は効率いいです!!
私が厳選したオススメのオンライン教室を貼っておきます!!どちら共、エンジニアとしての就職までサポートしてくれる素晴らしい教室です。キャリアなどの個別相談は無料ですよ!!
申し込みは完全無料!未経験でITエンジニアを目指したい方にオススメ!
Webエンジニアになりたい方にオススメ!個別相談は無料!
