2017-03-12 20 views
0

ちょっとしたアプリを書こうとしています。私は物事を今働かせました。私は、必要とされるものをすべてより良いものにする予定です。私は1つの間違いを発見しました。 私は、arraylistであり、そのアクセスは公開されている静的フィールドを持つクラスを持っています。 他のクラスでもこのクラスが使用されていますが、他のクラスからこのフィールドへのアクセスを取得するための最良の方法は何か不思議です。 まず、このリストを返すだけのゲッターを思い出してください。 しかし、私は他のアイディアを持っていません。C#配列の静的フィールド

挨拶、 ベティ

+2

本当に* ArrayList *の場合は、最初のエラーは2017年に* ArrayList *を使用していることです。* List * – xanatos

+0

を使用するクラスは非静的な方法で使用する必要がありますか?私はあなたが現在ArrayListを取得している方法を推測しています "objectName.arrayListName"です。それは本当にあなたがArrayListを使用しているかによって異なります。 ArrayListの使用方法の要約を投稿してください。また、ArrayListではなくListを使用することを検討してください。 – JMad

+0

私たちにいくつかのコードを見せてください。そうでなければ、コレクションのアクセシビリティに関しては、私は一般に、必要な機能性に応じて自分のgetter、setter、およびaddersを作成したいと考えています。 – pijemcolu

答えて

0

それはさまざまな方法で行うことができ、これはその一つである:

public class TestService 
{ 
    private static readonly List<string> list = new List<string>(); 

    public IEnumerable<string> List 
    { 
     get { return list; } 
    } 

    //list manipulation methods... 
} 

基本的には、上の(つまり、アイテムを削除/更新/追加)の操作を防ぐ必要がありますそのクラスの外からのリスト。主にそのクラスはで、は直接リストの操作に責任があるためです。

だからこそ、それはIEnumerable<string>タイプの背後にある理由です。この物件にキャストList<string>を悪用しないでください!

今すぐリストをクラスの外部から直接操作できないことがわかったら、TestServiceクラス内のパブリックメソッドを公開する必要があります。それぞれの方法には1つの責任と変更する理由(SRP)のみが必要です。言い換えれば、項目を追加、更新、削除するための別の方法が必要です。

関連する問題