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

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

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

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

Visual Studio

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

Q&A

解決済

2回答

1200閲覧

C#にて、クラス内で文字列配列データを共有する

nodact

総合スコア41

C#

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

Visual Studio

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

0グッド

0クリップ

投稿2017/11/22 06:01

編集2017/11/22 06:08

質問を見ていただきましてありがとうございます。
当方、もともとCの基本的な知識がある程度ですが、
C#は駆け出しで現在Visual Studioソフトを作成しております。
会社の方針でC#にシフトすることになりました。

早速掲題の件ですが、
プログラムの中で、データを共有したいです。
調べたところ、思っていることが見つからなかったので
ここで質問させていただきます。

やりたいことです。

どう説明していいものなのかも、まだまだ分からないので
細かく書いていきます。

C#

1TEST_1.csの中です。 2 3namespace TEST 4{ 5 class TEST_1 6 { 7 ここの中で共有したい。 8  } 9}

共有したいデータ
文字列で複数のデータ
イメージとしては文字列配列になるのかと思いました。
どういったものかといいますと

番号:データ内容
1:データ(社員番号など)
2:データ(社員番号など)
・・・
20:データ(社員番号など)

のような簡単なもので、今後数は増えていく可能性があります。
もしも、可能であれば下記のようなものが理想です。

番号:名前:データ内容
1:田中:データ(社員番号など)
2:佐藤:データ(社員番号など)
・・・
20:佐々木:データ(社員番号など)

プログラムの中では、どういった処理をするかというと
イメージとしてはデータの数分だけ処理を行いたいです。
Cで書くならば、

C

1for(int i;i<データの数;i++){ 2 番号[i]のデータを使った処理 3 もしも、例外が発生した場合は記録して一番最後に処理 4} 5例外があった場合 6例えば1番と20番目で例外があったら 7「田中と佐々木で例外発生」 8とテキストに表示する

といったイメージです。
最後の例外に関しては、理想の方を採用しましたが
できなければ、~番で例外でも構いません。

ここで、質問です。
1.上記のような数の多いデータを共有するには、どこに記載したらよいのでしょうか?
(以前App.configに記載してConfigurationManager.AppSettings["key"]で呼び出すというのを
見たことがあります。このような感じになるのでしょうか?)
2.データを保存というか格納というのでしょうか?上記のようなデータを扱いたいときは
どのようにして扱えばよいでのしょうか?
(配列とか構造体みたいなものでしょうか?)

以上になります。
勉強不足で申し訳ございません。
ご教示のほどお願い申し上げます。

追記
質問に関して回答いたします。
本来であれば、DBに保存するがよいというは間違いないと思います。
しかし現在は、まだ機能テストなので同一プログラム内で実験したいというものでした。
あとは、お恥ずかしいのですが、DB等の知識がないというのもあります。
構成の仕方から参照する方法まで、勉強不足でございます。
こういったレベルだと簡単にできるのもなのでしょうか?

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

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

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

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

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

yumetodo

2017/11/22 06:04

そもそもの問題として、その手のものはDBに入れておくものではないかと思うのですが、その点どうでしょう?
guest

回答2

0

ベストアンサー

共有したい

の言わんとしていることが分からないんですが、クラス内で汎用的に使いたいってことですかね?
妄想で定義しました。

C#

1 public class MyClass 2 { 3 public class Employee 4 { 5 public int No { get; set; } 6 public string Name { get; set; } 7 public string Data { get; set; } 8 } 9 private List<Employee> EmployeeList { get; set; } 10 11 public List<string> Validate() 12 { 13 var invalidEmployeeNames = new List<string>(); 14 EmployeeList.ForEach(e => 15 { 16 if(!IsValid(e)) 17 invalidEmployeeNames.Add(e.Name); 18 }); 19 return invalidEmployeeNames; 20 } 21 22 private bool IsValid(Employee emp) 23 { 24 //なんかチェック処理 25 return true; 26 } 27 }

これでMyClass内でEmployeeListを使えます。
継承を考えるならprotected、クラスの外に公開したいならpublicと適宜指定してください。

たぶん、そもそもまずC#の本を読んだほうがいいです。
やりたいことはCで考えて、やれることをC#で表現する。
ためには書き方を知らないことにはどうしようもないですから。

【追記】
コードを手直ししました。
Employeeを順番に走査し、不備があるものだけ名前を抽出して配列(Listのこと)で返す感じです。

投稿2017/11/22 06:17

編集2017/11/22 06:22
ShikaTech

総合スコア468

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

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

0

1 言いたい気持ちは、オブジェクトのシリアライズ、デシリアライズってやつですね。永続化とかそういうの。
今時は、JSONで一択じゃないですかね。

https://qiita.com/ta-yamaoka/items/a7ff1d9651310ade4e76

素のテキストより、構造化されているJSONのほうがマシでしょう。
これを、ファイルに書き込むとかすればいいんでは。

2 List<T> に入れる。 「Generic List C#」あたりで検索してください。

投稿2017/11/22 06:13

kiichi54321

総合スコア1984

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問