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

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

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

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

Q&A

解決済

1回答

8650閲覧

他クラスからの値の参照

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2020/07/07 07:32

編集2020/07/07 07:43

お疲れ様です。
C#の値の参照の仕方について質問です。
例えば、Form1クラスのメンバ変数を参照したいとき(もしくは他クラスのメンバ変数をForm1から参照したいとき)にどう参照するのが一番正しいのでしょうか?
手段としては、
1.変数をstaticにし、参照する。
2.引数として渡す。
3.変数のアクセスをinternalにし、Form1.変数のようにして参照する。
メンバ変数をいじる際はプロパティを使いますが、メンバ変数の値をいじらずそのまま使いたいときはどうすればよいのでしょうか?
私の認識が大きく間違っている可能性があるため、もしそうであったらご指摘お願いいたします。
当方の環境は、VS2012です。
[追記]

private int human; ~インスタンスを設定~ public int GetHuman() { return this.human; } public int SetHuman() { this.Human = human; }

Form1クラスでは上のように実装し、(一部間違いあると思います)publicなプロパティから値を参照するのが一番いい気がしてきました。

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

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

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

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

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

Zuishin

2020/07/07 07:47

手っ取り早い方法はいくつかありますが、「一番正しい」方法が知りたいのであれば、一言で伝えることはできませんが、「参照しない」という回答になります。しかし慣れないうちは自分のわかる方法を使えばいいと思います。
退会済みユーザー

退会済みユーザー

2020/07/07 07:50

回答いただきありがとうございます。 自分は、初学者なため、理想を求めるにはまだ早いと感じています。 ひとまずは自分の一番理解できるやり方を使っていこうと思います。
Zuishin

2020/07/07 07:52

質問に掲載されているコードで思った通りのことができるなら、それでいいんじゃないでしょうか。
退会済みユーザー

退会済みユーザー

2020/07/07 07:56

確かにその通りですね。ありがとうございます。
guest

回答1

0

ベストアンサー

そのクラスのインスタンスからアクセスする、です。
アクセスしようとするクラスにあらかじめインスタンスを渡すようにしましょう

投稿2020/07/07 07:38

y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2020/07/07 07:47

回答いただきありがとうございます。 インスタンスを渡してそのインスタンスからアクセスする場合、元の変数はprivateにできないと思うのですが()間違っていたらすみません)、その点は問題ないのでしょうか?
y_waiwai

2020/07/07 07:52 編集

もちろん、publicにしないとだめです なにかpublicにしたくない理由があるんでしょうか
退会済みユーザー

退会済みユーザー

2020/07/07 07:55

自分の中では、メンバ変数はとにかく不用意な干渉を受けないように、privateで実装をしないといけないという意識があったので、publicなプロパティを実装し、そこにアクセスしたほうが良いと思った次第です。(もちろん状況によりけりだとは思いますが)
Zuishin

2020/07/07 07:56

public にすべきではありませんが、手っ取り早く初心者に理解しやすく実装するなら、そうするのが一番早いと思います。
退会済みユーザー

退会済みユーザー

2020/07/07 08:02

それは一理ありますね。 早く初心者を卒業できるように頑張ります。
y_waiwai

2020/07/07 08:08

他クラスから参照したいというのであればpublicにすべきです。 逆に、他クラスから参照するものでないなら、publicにするべきではない、と言えます。 干渉を受けたくないというのであれば、プロパティにして読み込みだけpublicにするということも可能です。
退会済みユーザー

退会済みユーザー

2020/07/07 08:13

今取り組んでいる事案的にメンバ変数はprivateにすべきだと判断したため、プロパティのgetだけpubluicにすることにしました。 つたない質問にお付き合いいただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問