2

List<String>プライベート静的コレクションを持つクラスがあります。ここで、読み取り専用リストを返したいと思います。これは理想的な方法でしょうか?別の方法でやりますか?これは適切な方法ですか?

namespace Test
{
    static class Storage
    {

        private static List<string> store;

        static Storage()
        {
            store = new List<string>();
        }

        //Is it okay to have a getter in my static class to return my List Collection
        public static System.Collections.ObjectModel.ReadOnlyCollection<string>getList
        {
            get
            {
                return stores.AsReadOnly();
            }
        }

        public static void addString(string add)
        {
            store.Add(add);
        }

    }
}
4

1 に答える 1

2

それはクライアントの期待に依存します。リストの内容が変更される可能性があることをクライアントが期待している場合、それは(漠然と)問題ありません。彼らが不変のコレクションを期待している場合は、コピーを取る必要があります。

最初はスレッドセーフではないことに注意してください。これは、グローバルList<T>な可変状態になると大きな赤い警告灯であり、明確な同期なしでアクセスされます...

(グローバルな可変状態を持つことは、IMOから始めて、テスト容易性に影響を与えるなどの問題です。安全でない方法でそうすると、さらに悪化します。)

于 2012-09-06T13:15:20.617 に答える