SORU
24 Temmuz 2009, Cuma


Sözlük< için bir öğe ekleyerek daha zarif bir şekilde;&yok gt; güvenli mi?

Bir sözlük için anahtar/nesne çiftleri eklemek istiyorum, ama ben tabii ki, anahtarı zaten ben aksi varsa ilk kontrol gerekir "anahtar zaten sözlük var

Böyle dize yardımcı yöntemi yapmadan bunu yapmanın daha zarif bir yolu nedir?

using System;
using System.Collections.Generic;

namespace TestDictStringObject
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, object> currentViews = new Dictionary<string, object>();

            StringHelpers.SafeDictionaryAdd(currentViews, "Customers", "view1");
            StringHelpers.SafeDictionaryAdd(currentViews, "Customers", "view2");
            StringHelpers.SafeDictionaryAdd(currentViews, "Employees", "view1");
            StringHelpers.SafeDictionaryAdd(currentViews, "Reports", "view1");

            foreach (KeyValuePair<string, object> pair in currentViews)
            {
                Console.WriteLine("{0} {1}", pair.Key, pair.Value);
            }
            Console.ReadLine();
        }
    }

    public static class StringHelpers
    {
        public static void SafeDictionaryAdd(Dictionary<string, object> dict, string key, object view)
        {
            if (!dict.ContainsKey(key))
            {
                dict.Add(key, view);
            }
            else
            {
                dict[key] = view;
            }
        }
    }
}

CEVAP
24 Temmuz 2009, Cuma


Sadece dizin oluşturucu kullanın - eğer zaten varsa üzerine yazılır, ama değilvarorada birinci olmak:

Dictionary<string, object> currentViews = new Dictionary<string, object>();
currentViews["Customers"] = "view1";
currentViews["Customers"] = "view2";
currentViews["Employees"] = "view1";
currentViews["Reports"] = "view1";

Eğer anahtarın varlığını bir hata atmak istiyorsun () ve dizin yoksa gösterirse temelde Add kullanın. (Referans dönüşümler için as döküm kullanmak arasındaki fark gibi bir şey.)

C# 3 kullanıyorsanızve tuşları farklı bir dizi varbu bile daha güzel olun:

var currentViews = new Dictionary<string, object>()
{
    { "Customers", "view2" },
    { "Employees", "view1" },
    { "Reports", "view1" },
};

Bu koleksiyon başlatıcılar her zaman olduğu gibi senin durumunda olsa bile işe yaramaz Customers ikinci giriş atmak Add.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009