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

  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • modica89

    modica89

    24 HAZİRAN 2007
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012