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

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

ただいまの
回答率

91.35%

  • C#

    4756questions

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

  • Visual Studio

    1204questions

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

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

解決済

回答 2

投稿 2017/11/22 15:01 ・編集 2017/11/22 15:08

  • 評価
  • クリップ 0
  • VIEW 123

nodact

score 21

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

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

やりたいことです。

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

TEST_1.csの中です。

namespace TEST
{
   class TEST_1
   {
     ここの中で共有したい。
  }
}

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

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

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

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

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

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


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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yumetodo

    2017/11/22 15:04

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

    キャンセル

回答 2

checkベストアンサー

0

共有したい

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

    public class MyClass
    {
        public class Employee
        {
            public int No { get; set; }
            public string Name { get; set; }
            public string Data { get; set; }
        }
        private List<Employee> EmployeeList { get; set; }

        public List<string> Validate()
        {
            var invalidEmployeeNames = new List<string>();
            EmployeeList.ForEach(e =>
            {
                if(!IsValid(e))
                    invalidEmployeeNames.Add(e.Name);
            });
            return invalidEmployeeNames;
        }

        private bool IsValid(Employee emp)
        {
            //なんかチェック処理
            return true;
        }
    }

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

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

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

投稿 2017/11/22 15:17

編集 2017/11/22 15:22

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

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

投稿 2017/11/22 15:13

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • C#

    4756questions

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

  • Visual Studio

    1204questions

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