#rustð�使用哈希图很酷。还有一点C#经验ð
#c #arrays #collections #englishpost

嗨!

在今天的First Steps with Rust的Rust出租人(西班牙语)中,我们审查了Rust的标签。我们谈论访问非现有项目时的行为,很高兴获得无返回而不是错误或异常。

例如,此代码:


use std::collections::HashMap;

fn main() {
    let mut pets = HashMap::new();
    pets.insert("Ace", "dog");
    pets.insert("Goku", "car");
    pets.insert("Jim", "squirrel");
    println!("{:#?}", pets);

    let net = "Net";
    let net_animal = pets.get(net);
    println!("{} is a {:?}", net, net_animal);
}

返回此输出。


warning: `HashMap01` (bin "HashMap01") generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 0.83s
     Running `target\debug\HashMap01.exe`
{
    "Ace": "dog",
    "Goku": "car",
    "Jim": "squirrel",
}
Net is a None

键网没有元素,因此它没有保留。

在C#中相同吗? ð

,嘿,在C#中会发生什么?我确定,如果我尝试访问不存在的元素,则该应用将触发错误。所以我测试了此代码


// create a new dictionary named petsDic
Dictionary<string, string> petsDic = new Dictionary<string, string>();
petsDic.Add("Ace", "dog");
petsDic.Add("Goku", "car");
petsDic.Add("Jim", "squirrel");

// print the petsDic items
foreach (KeyValuePair<string, string> pet in petsDic)
    Console.WriteLine(pet.Key + " is a " + pet.Value);

// get an element from the dictionary
var petD = petsDic["Milly"];
Console.WriteLine("Milly is a " + petD);

,正如预期的那样,我得到了一个system.collections.generic.keynotfoundexception!

但是,嘿,对于此示例,我使用字典<>。因此,让我们尝试使用c#中的标签来尝试一下。因此,让我们尝试此代码。


using System.Collections;

// create a new hashtable named pets
Hashtable pets = new Hashtable();

pets.Add("Ace", "dog");
pets.Add("Goku", "car");
pets.Add("Jim", "squirrel");

// print the pets hashtable items
foreach (DictionaryEntry pet in pets)
    Console.WriteLine(pet.Key + " is a " + pet.Value);

// get an element from the hashtable
var petM = pets["Milly"];
Console.WriteLine("Milly is a " + petM);

,这种情况没有触发异常ð。

using HashTables in C#, and accesing a non-exiting element, did not trigger an exception.

在此Rust系列中,我们讨论了很多关于了解每种数据类型的工作原理。而且,我还要补充一点,如果您有一些以前的知识,最好检查和验证知识!我被一个错误的假设抓住了!

快乐编码!

问候

el bruno

我的博客ElBruno.com中的更多帖子。