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日

相关文章

  • WinForm相对路径的陷阱

    WinForm相对路径的陷阱是指在Windows窗体应用程序中使用相对路径时可能会遇到的问题。在WinForm应用程序中,使用相对路径可以方便地引用外部文件,例如资源文件、配置文件、图片等,但是如果不注意一些细节,就会出现问题。下面是WinForm相对路径的完整攻略。 1. 了解相对路径和绝对路径 在开始之前,我们需要了解相对路径和绝对路径的概念。相对路径是…

    C# 2023年6月1日
    00
  • C#实现闹钟AlarmClock实例代码

    下面是详细讲解“C#实现闹钟AlarmClock实例代码”的完整攻略: 1. 确定需求 我们要实现一个简单的闹钟程序,具有设置闹钟时间、开启闹钟、关闭闹钟等功能。 2. 创建C#控制台应用程序 打开Visual Studio,选择“新建项目”,选择“Visual C#”类型,“控制台应用程序”模板,输入项目名称,点击“创建”按钮。这样就创建了一个空白的控制台…

    C# 2023年6月6日
    00
  • C#实现文本文件读写方法汇总

    关于“C#实现文本文件读写方法汇总”,我将会提供以下完整的攻略: C#实现文本文件读写方法汇总 一、写入文本文件 1. 使用StreamWriter 可以使用 System.IO.StreamWriter 类来写入文本文件。下面是一个简单的示例,演示了如何使用该类将字符串写入到文本文件中: using System.IO; string filePath =…

    C# 2023年6月6日
    00
  • C#事件中关于sender的用法解读

    当我们定义一个事件时,必须要在事件的定义中指定sender参数。sender参数表示事件的触发者,用于在事件处理中判断事件的来源。 在事件的处理中,可以利用sender参数来获取事件的触发者,进行相应的处理。 下面我们通过代码示例来详细讲解C#事件中关于sender的用法。 示例1 public class MyEventArgs : EventArgs {…

    C# 2023年5月31日
    00
  • C#引用类型作为方法的参数分析

    C#引用类型作为方法的参数分析 在C#中,当我们传递参数时,如果参数本身属于引用类型,则将传递引用(内存地址),而不是传递值。这意味着,如果我们更改引用类型参数的值,该更改将在所有对它进行访问的位置上反映出来。本文将介绍C#引用类型作为方法参数的用法和注意事项。 什么是引用类型 在C#中,引用类型是指实例存储在堆上的类型,以及它们对对象的引用存储在堆中或者栈…

    C# 2023年6月7日
    00
  • C#中委托和事件的区别详解

    C#中委托和事件的区别详解 什么是委托和事件 委托 委托(delegate)是一种类型,它可以代表多个方法,并且只有这些方法的签名一致才能被委托代表。委托可以看做是方法的引用,提供了一种将方法作为参数传递给其他方法的方式。 在C#中声明一个委托类型,需要使用delegate关键字。 事件 事件(event)是委托的一种应用,它允许对象在某个事件发生时,通知其…

    C# 2023年6月7日
    00
  • .NET Core读取配置文件

    下面是“.NET Core读取配置文件”的完整攻略: 1. 创建配置文件 首先,我们需要在项目中创建一个配置文件,以便存放我们需要读取的配置信息。配置文件可以是JSON、XML或INI等格式。这里我们以JSON格式作为示例,创建一个名为appsettings.json的文件,并在文件中添加配置信息。如下所示,我们添加了一个名为”ConnectionStrin…

    C# 2023年6月3日
    00
  • .net core利用PdfSharpCore操作PDF实例教程

    .NET Core利用PdfSharpCore操作PDF实例教程 简介 PdfSharpCore是一个.NET Core实现的PDF库,它提供基本的PDF操作,如创建、编辑和添加内容到PDF文件等。在本教程中,我们将使用PdfSharpCore来创建、编辑和保存PDF文件。 安装 我们通过NuGet安装PdfSharpCore。可以在Visual Studi…

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