C# GetValueOrDefault(TKey):获取具有指定键的元素的值,或者如果该键不存在,则返回默认值

C# GetValueOrDefault(TKey) 方法的完整攻略

方法介绍

在 Dictionary 类中,GetValueOrDefault(TKey) 方法用于获取与指定键关联的值。如果未找到键,则此方法将返回 TValue 类型的默认值。

方法签名

该方法的签名为:

public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key);

参数说明

  • dictionary:IDictionary 接口,表示要从中获取值的泛型字典。
  • key:TKey 类型,表示要检索值的键。

返回值

如果字典包含指定键,则返回该键对应的值;否则返回 TValue 类型的默认值。

示例说明

下面是两个使用 GetValueOrDefault 方法的示例:

示例 1

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Dictionary<string, int> numbers = new Dictionary<string, int>();
        numbers.Add("one", 1);
        numbers.Add("two", 2);
        numbers.Add("three", 3);

        // 获取存在的键
        int value1 = numbers.GetValueOrDefault("two");
        Console.WriteLine(value1);

        // 获取不存在的键
        int value2 = numbers.GetValueOrDefault("six");
        Console.WriteLine(value2);
    }
}

该示例创建了一个包含三个键值对的字典,然后使用 GetValueOrDefault 方法获取字典中的值。由于该示例中的字典包含键 "two",所以第一个 GetValueOrDefault 方法调用返回了字典中与 "two" 关联的值 2。由于该字典不包含键 "six",因此第二个 GetValueOrDefault 方法调用返回字典中默认值的类型 int 的默认值 0。

示例 2

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        dictionary.Add("England", "London");
        dictionary.Add("France", "Paris");

        // TValue 类型为引用类型(string),并且字典中存在指定键,则返回该键对应的值
        string capital1 = dictionary.GetValueOrDefault("England");
        Console.WriteLine(capital1);

        // TValue 类型为引用类型(string),并且字典中不存在指定键,则返回默认值 null
        string capital2 = dictionary.GetValueOrDefault("Germany");
        Console.WriteLine(capital2);

        // TValue 类型为值类型(int),并且字典中不存在指定键,则返回默认值 0(即 TValue 的默认值)
        int value = dictionary.GetValueOrDefault("Spain");
        Console.WriteLine(value);
    }
}

该示例创建了一个包含两个键值对的字典,并使用 GetValueOrDefault 方法从字典中获取值。其中,capital1 和 capital2 变量都是字符串,因为字典中存储的值是引用类型 string。对于不存在于字典中的键 "Germany",GetValueOrDefault 方法返回 null,因为该字典引用的值类型为字符串。对于不存在于字典中的键 "Spain",GetValueOrDefault 方法返回默认值 0,因为该字典引用的值类型为字典类型 TValue 的默认值。

在第二个 GetValueOrDefault 方法调用中,由于 TValue 类型为引用类型(string),字典中不存在指定键,则返回默认值 null,类型为 TValue 的默认值。在第三个 GetValueOrDefault 方法调用中,由于 TValue 类型为值类型(int),字典中不存在指定键,则返回默认值 0,类型为 TValue 的默认值。

总结

GetValueOrDefault(TKey) 是 Dictionary 类型的扩展方法,用于获取与指定键关联的值。如果键不存在,该方法将返回 TValue 类型的默认值。在使用该方法时,请记得检查返回值是否为 null,以避免可能的 NullReferenceException 异常。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# GetValueOrDefault(TKey):获取具有指定键的元素的值,或者如果该键不存在,则返回默认值 - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • Unity控制指针旋转到指定位置

    下面我来详细讲解一下“Unity控制指针旋转到指定位置”的完整攻略。 目录 前言 示例 #1:基于Transform.LookAt()方法旋转指针 示例 #2:基于Quaternion.Slerp()方法平滑旋转指针 总结 前言 在Unity游戏开发中,经常需要控制3D模型或UI元素随着玩家交互进行旋转。而控制对象旋转最常用的方法是使用Unity的Trans…

    C# 2023年6月3日
    00
  • C#对文件/文件夹操作代码汇总

    关于”C#对文件/文件夹操作代码汇总”的攻略,主要包含以下内容: 1.文件夹操作 创建文件夹 使用System.IO.Directory 类的CreateDirectory()方法可以创建一个新的文件夹。代码实例: string path = @"C:\MyDirectory"; if (!Directory.Exists(path)) …

    C# 2023年5月15日
    00
  • 基于Dapper实现分页效果 支持筛选、排序、结果集总数等

    下面是 “基于Dapper实现分页效果 支持筛选、排序、结果集总数等” 的完整攻略。 思路 实现分页的关键是计算结果集并将结果划分为多个位置。Dapper是一个轻量级的ORM工具,它可以通过SQL轻松实现分页。Dapper分页需要提供三个参数: 页码 每页显示的行数 排序方式 同时也要考虑到关键字搜索等一些额外的筛选条件。 实现步骤 第一步:构建SQL查询语…

    C# 2023年6月3日
    00
  • 详解C#多线程之线程同步

    详解C#多线程之线程同步 前言 在多线程编程中,线程同步是一个非常重要的概念。当多个线程并发执行同一段代码时,由于线程执行顺序和时机的不确定性,可能会导致各种不可预测的结果,比如死锁、竞态条件等问题。因此,为了确保多线程程序的正确性,我们必须使用正确的线程同步机制来协调线程之间的访问。 本文将详细讲解C#中的线程同步机制,包括锁、互斥量、信号量和事件等。 锁…

    C# 2023年5月15日
    00
  • C#远程获取图片文件流的方法

    下面我将详细讲解“C#远程获取图片文件流的方法”的完整攻略,通过下面的流程,你可以轻松地获取远程图片的文件流。 1. 发送HTTP请求 首先,我们需要使用System.Net命名空间下的WebRequest和WebResponse类来发送http请求来获取图片的字节流。以下是一段示例代码: string imageUrl = "<remote…

    C# 2023年6月1日
    00
  • AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)

    引子 最近不知怎么的,自从学了WebAPI(为什么是这个,而不是MVC,还不是因为MVC的Razor语法比较难学,生态不如现有的Vue等框架,webapi很好的结合了前端生态)以后,使用别人的组件一帆风顺,但是不知其意,突然很想自己实现一个基于的JWT认证服务,来好好了解一下这个内容。 起步 自从Session-Cookie方案逐渐用的越来越少,JWT的使用…

    C# 2023年4月24日
    00
  • C#异步迭代IAsyncEnumerable应用实现

    下面是“C#异步迭代IAsyncEnumerable应用实现”的完整攻略。 一、什么是异步迭代IAsyncEnumerable? 在.NET Core 3.0及以上版本中,新增加了一种异步的IEnumerable – IAsyncEnumerable。它是一种异步枚举器,可以用于异步处理序列化的数据,不再需要将整个枚举器加载到内存中,而是可以一次异步地获取单…

    C# 2023年5月15日
    00
  • 怎么利用c#修改services的Startup type

    要利用C#修改Windows服务的启动类型(Startup type),可以使用.NET Framework下的ServiceController和ServiceType类。步骤如下: 步骤一:添加引用 在项目中添加System.ServiceProcess引用。 步骤二:获取服务 使用ServiceController类获取要修改的服务,可以用服务名称或服…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部