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

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

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

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

Q&A

解決済

1回答

4183閲覧

C# 同クラス内の別メソッドに値を引き渡したい

Mr.sijimi

総合スコア21

C#

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

0グッド

0クリップ

投稿2020/09/24 04:27

編集2020/09/24 05:49

前提・実現したいこと

TestServiceクラス内のメソッド(TestA)にテーブルAのDataSetを取得したAllDataという変数が定義されています。
そのAllDataの値を同じクラス内に定義されているメソッド(TestB)に渡し、使用できるようにしたいと考えております。
下記のように他の型にて引数定義されております。

現状は各メソッドにて個別に定義しております。
それをできれば各メソッドの引数定義は変更せずに、メソッド間での値の受け渡しを実現させたいのですが可能なのでしょうか?

C#

1public interface ITestInterface 2{ 3 TableADataSet GetAllTableA(); 4} 5 6public class TestInterface : ITestInterface 7{ 8 public TableDataSetA GetAllTableA() 9 { 10 //TableAの全件取得のコードが記載されています。 11 } 12}

C#

1public class TestService 2{ 3 public ITestInterface TestInterface { get; set; } 4 5 public TestA(TestClassRequest request) //別クラスのメソッドからの引数 6 { 7 var allData = TestInterface.GetAllTableA(); //TestBメソッドに渡したい 8 } 9 10 public TestB(TestTableCollection collection) 11 { 12 //現状は下記のように定義しています。 13 var allData = TestInterface.GetAllTableA(); 14 // ここでTestA内に定義された「allData」を受け取り後続処理内で使用したい 15 } 16}

補足情報(FW/ツールのバージョンなど)

OS:Windows10 Pro64bit
IDE:MicroSoft Visual Studio Community 2015

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

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

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

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

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

YAmaGNZ

2020/09/24 04:43

interface TestInterfaceの提示の意味が分かりませんが、 TestServiceクラスにて private TableADataSet allData; と宣言すれば良さそうですが、こういうことではないのでしたらもう少し説明が必要かもしれません。
退会済みユーザー

退会済みユーザー

2020/09/24 04:50

public interface TestInterface とはなんですか? TestService はそれを継承してないし、どこにも使われてないようですが無視していいですか?
Mr.sijimi

2020/09/24 04:51

失礼いたしました。 TestAメソッド内のコードが記載ミスとなっていました。 修正いたします。
退会済みユーザー

退会済みユーザー

2020/09/24 04:59

やってることがメチャクチャにしか見えません。interface というのが何だかわかってないようですけど?
YAmaGNZ

2020/09/24 05:01

修正されたものを見ましたが、結局先ほど書いたことで事足りる気がします。
Mr.sijimi

2020/09/24 05:06

SurferOnWww様 不備多く申し訳ありません。再度修正いたしました。 YamaGNZ様 基本的な質問になってしまうのですが、TestServiceクラス内での宣言というのはTestAメソッド外、かつそれより上位箇所で宣言するというこという認識で合っていますでしょうか?
退会済みユーザー

退会済みユーザー

2020/09/24 05:12

> 不備多く申し訳ありません。再度修正いたしました。 interface というのが何だかわかってないですよね。話が通じてません。名前に I を付ければいいってものではありませんよ。そもそもそのコードはコンパイラは通るのですか? 質問して解決できる知識レベルに達してないと思います。勉強が必要かと。
YAmaGNZ

2020/09/24 05:12

メンバ変数について調べてください。 また、変数のスコープについて学習されたほうがいいでしょう。
Zuishin

2020/09/24 05:15

TestInterface クラスがインスタンス化されていませんね。 var testObject = new TestInterface(); var allData = testObject.GetAllTableA(); 上記のようにすると、allData が得られるのではないかと思います。 GetAllTableA はインターフェースのメソッドなので、静的メソッドではなくインスタンスメソッドでしょうし、呼び出すには () をつけなければいけません。
Mr.sijimi

2020/09/24 05:40

SurferOnWww様 コードがまだ未完成なため実行確認は取れておりません。 現状interfaceについてはっきりとした理解ができていないのも現実ですのでもっと勉強します。 YAmaGNZ様 それぞれに関してもう少し勉強してみます。 Zushin様 そちらの記載内容ですとインスタンス化が追加されたのみと見受けられます。 現状はTestA、TestBそれぞれでGetAllTableAを取得し使用している並列状態となっております。 今回の質問のゴールとしてはTestAでGetAllTableAを取得し、それを利用してTestBに受け渡す直列状態にできないものかと思い質問させていただきました。 内容がわかりずらく申し訳ありません。
Zuishin

2020/09/24 05:44

主題はそこではありません。 クラス名.メソッド名 上記の場合、静的メソッドになり、インターフェースとは無関係になります。 また、メソッドを呼び出すには () をつけなければいけません。
退会済みユーザー

退会済みユーザー

2020/09/24 06:30

> コードがまだ未完成なため実行確認は取れておりません そんなコードはアップしないでほしい。最低限コンパイルは問題なく通って、質問者さんの問題・課題を説明できるものにしてください。
退会済みユーザー

退会済みユーザー

2020/09/24 06:39

> 内容がわかりずらく申し訳ありません。 何故分かり難くなったか分かってないようですね。訳も分からないまま interface という余計なものを持ち出してきたからです。さらには、回答者は今回の課題には関係ない不要なものではないかと思いながらも、何なのか確認しようとしたのですが、話が通じないからラチが明かないということです。
guest

回答1

0

ベストアンサー

その変数をクラス変数にすれば、クラス内で自由に使えるようになります。

投稿2020/09/24 05:51

y_waiwai

総合スコア87774

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

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

Mr.sijimi

2020/09/24 06:19

ありがとうございます! やりたいことが無事できました。
退会済みユーザー

退会済みユーザー

2020/09/24 06:44 編集

質問のコメント欄の YAmaGNZ さんの 2020/09/24 13:43 のコメントでその答えは出てますけど? ホントに上の回答で解決できたということなら、あなたは真摯にコメントを読んでないということになりますよ。
Zuishin

2020/09/24 06:59

間違いが多すぎてどれを拾えば正解なのかわからない。インターフェースとは何だったのか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問