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

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Candyrat Records

    Candyrat Rec

    10 Mayıs 2006
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006