1.概要
如果Dictionary的key对应的对象没有会怎样?会发生异常呢,很多时候我们都需要有如下的场景,根据key获取对象,并做相应的处理。
结论,如果没有会报异常,可以用try chatch,也可以用ContainsKey(key)来判断。
2.代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 如果Dictionary的key对应的对象没有会怎样
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("如果Dictionary的key对应的对象没有会怎样");
Program p = new Program();
p.main();
Console.ReadKey();
}
private void main() {
test1();
test2();
test3();
}
/// <summary>
/// 试一试string(引用)类型会怎么样:报异样
/// </summary>
private void test1() {
Console.WriteLine("\n1.试一试string(引用)类型会怎么样:报异常");
Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
keyValuePairs.Add(1, "1");
//报异常
string a = null;
try
{
a = keyValuePairs[2];
}
catch (Exception ex) {
}
if (a == null)
{
Console.WriteLine("key:2 对应的对象不存在");
}
}
/// <summary>
/// 使用ContainsKey
/// </summary>
private void test2() {
Console.WriteLine("\n2.使用ContainsKey");
Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
keyValuePairs.Add(1, "1");
if (!keyValuePairs.ContainsKey(2)) {
Console.WriteLine("key:2 对应的对象不存在");
}
}
/// <summary>
/// 试一试int(非引用)类型会怎么样:同样报异样
/// </summary>
private void test3() {
Console.WriteLine("\n3.试一试int(非引用)类型会怎么样:同样报异常");
Dictionary<int, int> keyValuePairs = new Dictionary<int, int>();
keyValuePairs.Add(1, 1);
//报异常
int a = 0;
try
{
a = keyValuePairs[2];
}
catch (Exception ex) {
}
if (a == 0)
{
Console.WriteLine("key:2 对应的对象不存在");
}
}
}
}
3.运行结果