C# 运算符 ?、??、?: 各种问号的用法和说明

C#运算符?、??、?:各种问号的用法和说明

在C#中,有三种问号运算符:????:。它们可以帮助我们简化代码,并更好地处理可能会出现空值的情况。让我们逐个来了解它们。

?运算符

?运算符用于处理可能为null的对象。它的语法是:

object? nullableObject = null;
var x = nullableObject?.SomeMethod();

这里,nullableObject对象可能为null,那么我们就不能直接调用它的方法。为了避免出现异常,我们在调用前加上?运算符。如果nullableObject非null,SomeMethod()会被正常地调用;否则,x将会为null。

下面这个示例演示了在链式表达式中使用?运算符:

class Car
{
    public string Make { get; set; }
    public Engine? Engine { get; set; }
}
class Engine
{
    public string Model { get; set; }
    public int Horsepower { get; set; }
}

假设我们有一个Car对象,并希望从Engine中获取 horsepower。首先,我们需要检查Engine是否为null,如果是则返回null值;否则,我们可以访问其属性Horsepower

var car = new Car
{
    Make = "Ford",
    Engine = new Engine { Model = "V8", Horsepower = 450 }
};
var horsepower = car?.Engine?.Horsepower; // 450

此处计算了? 运算符的2个非空引用的复合。在 ?? 运算符的周围,复合使用了这些运算符。

??运算符

??运算符用于在变量为null时给它一个默认值。它的语法是:

string x = nullableString ?? "default";

这里,x变量为nullableString的值,如果其为null,则使用默认值"default"。如果nullableString非null,则x将等于nullableString

下面这个示例演示了如何使用??运算符在方法参数中设置默认值:

public static int Add(int x, int? y = null)
{
    return x + (y ?? 0); // if y is null, use 0
}

我们定义一个静态方法Add,并将y定义为可空类型。如果y的值为null,则使用??运算符将它的值替换为0。否则,我们将把y的实际值加到x上。

?:运算符

?:运算符也被称为“条件运算符”或“三元运算符”,它简化了简单的条件语句的写法。它的语法是:

int x = (condition) ? trueValue : falseValue;

这里,如果conditiontrue,则返回trueValue;如果conditionfalse,则返回falseValue

下面这个示例演示了如何使用条件运算符:

int num = -1;
string result = (num > 0) ? "positive" : "non-positive"; // "non-positive"

我们定义了一个变量num,如果它是正数,则resultpositive,否则为non-positive

至此,三个问号运算符的用法都已经简单介绍了一遍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 运算符 ?、??、?: 各种问号的用法和说明 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在.NET中读取嵌入和使用资源文件的方法

    在.NET开发中,嵌入和使用资源文件是一个非常有用的技巧。利用资源文件,可以将特定的文件嵌入到程序集(.dll或.exe文件)中,使得程序的部署和维护更加方便。本文将详细讲解在.NET中读取嵌入和使用资源文件的方法。 嵌入资源文件 1.创建资源文件 需要将待嵌入的文件添加到资源文件中。创建资源文件的方法有两种: 手动创建:在Visual Studio中右键项…

    C# 2023年6月1日
    00
  • C#加密解密类实例程序

    以下是详细的“C#加密解密类实例程序”的攻略: 一、概述 在现代信息技术领域,数据加密已经成为很多应用的基本需求。为此,C#提供了一系列的加密解密类,比如MD5、SHA1、DES、AES等等。本文将主要介绍使用C#实现加密解密的方法,其中涉及到的加密算法是DES和AES。 二、加密解密实例 2.1 DES加密解密 DES是一种常用的对称加密算法,下面是一个使…

    C# 2023年5月31日
    00
  • 盘点C# 9.0中好用的特性

    顶级语句 将类和类里面Main函数省略,只留下核心的逻辑代码就是顶级语句! 1.顶级语句1 await System.Threading.Tasks.Task.Delay(1000); System.Console.WriteLine(“Hi!”); return 0; static class $Program { static async Task&lt…

    C# 2023年4月27日
    00
  • 解决.Net Core项目发布在IIS上访问404的问题

    解决.Net Core项目发布在IIS上访问404的问题 在将ASP.NET Core应用程序发布到IIS上时,可能会遇到404错误。这通常是由于IIS未正确配置或ASP.NET Core应用程序未正确配置所致。在本攻略中,我们将详细讲解如何解决ASP.NET Core应用程序发布在IIS上访问404的问题,并提供两个示例说明。 步骤一:安装.NET Cor…

    C# 2023年5月17日
    00
  • C#验证用户输入信息是否包含危险字符串的方法

    当用户提交输入信息时,应该进行对输入信息进行过滤,排除包含有恶意的、危险的字符串,避免安全问题的发生。本文将详细讲解 C# 验证用户输入信息是否包含危险字符串的方法。 步骤1:安装 Microsoft.Security.Application 库 Microsoft.Security.Application 是一个 .Net FrameWork 库,提供了一…

    C# 2023年5月15日
    00
  • asp.net 无重复随机数代码

    针对“asp.net 无重复随机数代码”的问题,下面我介绍一下这个问题的解决思路和具体实现过程: 解决思路 实现无重复随机数,需要考虑两个方面: 随机数不能重复,需要做到去重。 生成的随机数需要随机分布,不能出现指定的规律。 基于这两个需求,我们可以采用以下思路来解决问题: 定义一个范围内的数组,用于存储随机数。 定义一个随机数生成器,用于生成指定范围内的随…

    C# 2023年5月31日
    00
  • asp.net访问Access数据库溢出错误

    下面是详细的攻略: 概述 在使用ASP.NET访问Access数据库时,可能会遇到数据溢出(Overflow)错误,这是因为Access数据库在处理数据时对于列的大小有限制。本文将介绍如何诊断和解决这种问题。 诊断 出现数据溢出错误时,会抛出System.Data.OleDb.OleDbException: Arithmetic operation resu…

    C# 2023年6月6日
    00
  • 如何通过C#/VB.NET 代码调整PDF文档的页边距

    PDF边距是页面主要内容区域和页面边缘之间的距离。与Word页边距不同,PDF文档的页边距很难更改。因为Adobe没有提供操作页边距的直接方法。但是,您可以通过缩放页面内容来改变页边距。本文将介绍如何在不更改页面大小的情况下使用C#/VB.NET 代码调整PDF文档的页边距。 增加PDF文档的页边距 缩短PDF文档的页边距 增加PDF文档的页边距 扩大PDF…

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