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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

9664閲覧

クラスメソッドを認識しない

k_mail

総合スコア90

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2018/10/31 03:10

編集2018/10/31 05:27

クラスに宣言したStaticメソッドを呼び出せないです。

エラー内容としましては、
「引数2を指定するメソッド'Sum'のオーバーロードはありません。」
となります。

引数を2つ必要なSumメソッドが宣言されていないと解釈したのですが、
一応Sumメソッドを書いております。

以下、どこを修正すれば、良いのでしょうか。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TDD.UI { public partial class Form1View : Form { public Form1View() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int a = Convert.ToInt32(ATextBox.Text); int b = Convert.ToInt32(BTextBox.Text); EcualLabel.Text = Caluculation.Sum(a,b).ToString(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TDD.UI { public static class Caluculation { public static int Sum(int a, int b) { return a + b; } public static object Ave(List<int> list) { int values = 0; foreach (var val in list) { values += val; } return values / list.Count; } } }

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

次のコードで再現しません。

C#

1using System; 2using System.Collections.Generic; 3using System.Windows.Forms; 4 5namespace WindowsFormsApp1 6{ 7 public partial class Form1 : Form 8 { 9 public Form1() 10 { 11 InitializeComponent(); 12 } 13 14 private void button1_Click(object sender, EventArgs e) 15 { 16 MessageBox.Show(Caluculation.Sum(2, 3).ToString()); 17 } 18 } 19 public static class Caluculation 20 { 21 public static int Sum(int a, int b) 22 { 23 return a + b; 24 } 25 26 public static object Ave(List<int> list) 27 { 28 int values = 0; 29 foreach (var val in list) 30 { 31 values += val; 32 } 33 return values / list.Count; 34 } 35 } 36}

考えられる可能性は二つあります。

一つ目は、質問に書かれたコードと再現するコードが別物だということです。
写し間違えたのかのかもしれませんし、別のファイルを開いているのかもしれません。

二つ目は、そのエラーの発生場所がそこではないということです。
エラーメッセージは正確にコピペしてください。
意訳や省略は絶対に不可です。

投稿2018/10/31 04:08

編集2018/10/31 04:12
Zuishin

総合スコア28656

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

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

k_mail

2018/10/31 04:16

ご回答ありがとうございます。 再度、 //ResultLabel.Text = Caluculation.Sum(a,b).ToString(); のコメントを外すと、下記の内容のエラーが出ました。 (今までのエラーとは異なりました。) 「エラー CS1061 'Button' に 'sum' の定義が含まれておらず、 型 'Button' の最初の引数を受け付ける拡張メソッド 'sum' が見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。 」 お手数ですが、宜しくお願い致します。
Zuishin

2018/10/31 04:18

Sum にキャレットを当てて F12 を押してみてください。
Zuishin

2018/10/31 04:19

あと、Sum と sum は別のものです。 プロジェクト全体で sum を検索し、該当箇所を修正してください。
k_mail

2018/10/31 04:19

カレットの下のシンボルに移動できません。 とダイアログが表示されました。
Zuishin

2018/10/31 04:23

では、Sum が定義されていません。 別のものを呼び出そうとしています。 [Ctrl]+[F] で範囲をプロジェクト全体にして大文字小文字を区別し、sum を検索してください。
k_mail

2018/10/31 04:36

<summary>などしかヒットしませんでした。 下記のファイル転送サービスが安全の場合、 ファイルを転送するのですが.... https://fileroom.io/about
k_mail

2018/10/31 04:44

ファイルの譲渡はやめておきます。。。 一度、ソリューションを閉じ、再度立ち上げると、 エラー内容が変わっていましたので、再度、連携致します。 「エラー CS1501 引数 2 を指定するメソッド 'Sum' のオーバーロードはありません。」 もう少し、こちらで調べてみたいと思います。。。
Zuishin

2018/10/31 04:45

違うものを探していませんか? とりあえず質問を編集し、コメントアウトしているソースを追記してください。 その際、コードブロックを使ってください。
Zuishin

2018/10/31 04:46

あと、エラーにはそのエラーのあるファイルのファイル名と行番号があるはずです。 そこを見てください。 そこに Sum と書かれているはずなので、そこで F12 を押してください。
k_mail

2018/10/31 04:53

質問を編集しました。 現在、エラーが表示されているものは、 ファイル:Form1View.cs 行:25 のみです。 (//ResultLabel.Text = Caluculation.Sum(a,b).ToString(); とコメントアウトするとエラーがなくなります。)
Zuishin

2018/10/31 04:55

Caluculation の方がプロジェクトに含まれていないのでは? ソリューションエクスプローラーではどうなっていますか?
k_mail

2018/10/31 05:00

確認方法が不明ですが、 画像を添付致しました。 (Caluculation.csがあれば、プロジェクトに含まれているということでしょうか。)
Zuishin

2018/10/31 05:05

二つありますね。 TDD.UI に含まれている方をダブルクリックして中を確認してください。
k_mail

2018/10/31 05:12

ほんとですね。 TDD.UI に含まれている方は、上記の質問内のコードになります。 Solution Itemsの方は、 「このドキュメントは別のプロジェクトで開かれています。」と ダイアログが表示され確認はできませんでした。
Zuishin

2018/10/31 05:16

それならソリューションフォルダにある方も同じものですね。 ResultLabel がソースにありませんが、これはプロジェクトに含まれているソースですか? ソースとエラーを省略や変更なしで正確に書いてください。
Zuishin

2018/10/31 05:18

いやすみません、画像にありましたね。
Zuishin

2018/10/31 05:22

では、Caluculation.Sum(a, b) の Caluculation を F12 で調べてみてください。
k_mail

2018/10/31 05:27

自分で作成したクラスではなく、デザイナーのほうに飛びました。 画像を添付致します。
Zuishin

2018/10/31 05:30

ああ、なるほど。 ボタンの一つが Caluculation という名前になっていますね。 変更してください。 私はボタンの名前は ***Button という風に最後に Button を付けるようにしています。
Zuishin

2018/10/31 05:35 編集

ボタンの名前を変えたくない場合は、面倒ですが TDD.UI.Caluculation.Sum(a, b) のように名前空間を使って呼び出す必要があります。
k_mail

2018/10/31 05:41

エラーがなくなりました!!!! ( プロパティで***Buttonに変更⇒slnの再起動 ResultLabel.Text = Caluculation.Sum(a,b).ToString();) の右辺の 「Caluculation.Sum」が 「CaluculationButton.Sum」になっていたので、 "Button"を削除。) CaluculationでF12で定義したクラスのほうへ飛びました! 大変、お手数をお掛け致しました!! 非常に助かりました。 高評価が1回しかできなにのが非常に残念です!! ありがとうございました!!!!
guest

0

ResultLabel.Text = Caluculation.Sum(a,b); 

戻り値がstring のSumメソッドが見つからない、ということじゃないでしょうか

投稿2018/10/31 03:17

y_waiwai

総合スコア87719

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

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

k_mail

2018/10/31 03:21

ご回答ありがとうございます。 ResultLabel.Text = Caluculation.Sum(a,b).ToString(); に変更しましたが、変化はありませんでした。 そもそも、Caluculation.と入力したとき、 予測機能として「Sum」が表示されると思うのですが、 表示されないのです.....
y_waiwai

2018/10/31 03:37

Caluculationの記述してあるファイルがそのプロジェクトに加わってないのでは
k_mail

2018/10/31 04:03

ご回答ありがとうございます。 「既存の項目の追加」を行っても、解消されませんでした。 (Calと入力すると、予測変換で、Caluculationが表示されるので、 ファイルがそのプロジェクトに加わっているのかなと思いました。) コメントアウトして、 //ResultLabel.Text = Caluculation.Sum(a,b).ToString(); 実行すると、 「...bin\Debug\TDD.UI.exeが見つかりませんでした。」とエラーが表示されました。 指定されたパスを確認すると、ちゃんと「TDD.UI.exe」は存在しました。 これは放置でいいのでしょうか。 また、これが根本原因だったりするのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問