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日

相关文章

  • 一文带你了解C#中的协变与逆变

    一文带你了解C#中的协变与逆变 什么是协变与逆变 在程序设计中,经常需要对类进行继承和实现接口的操作。在这样的过程中,我们通常会遇到这样的问题:子类或者实现接口的类的泛型参数类型和父类的泛型参数类型不匹配。而“协变”和“逆变”就是解决这样的问题的方法。 协变和逆变是 C# 4.0 引入的两个关键技术,可以让我们更加灵活地使用泛型。在 C# 中,协变和逆变可以…

    C# 2023年5月15日
    00
  • .NET Core配置多环境的方法步骤

    .NET Core 配置多环境的方法步骤 在 .NET Core 中,我们可以使用多环境配置来管理不同环境下的应用程序配置。本攻略将介绍如何在 .NET Core 中配置多环境。 步骤 以下是在 .NET Core 中配置多环境的步骤: 创建 appsettings.json 文件。 在项目根目录下创建 appsettings.json 文件,并添加以下内容…

    C# 2023年5月17日
    00
  • C#的加密与解密

    C#的加密与解密 C#提供了多种加密与解密方式,常见的有对称加密、非对称加密和哈希算法。 对称加密 对称加密即使用相同的密钥进行加密和解密。常见的对称加密算法有DES、AES等。 示例代码: using System.Security.Cryptography; using System.Text; public static string Encrypt(…

    C# 2023年6月1日
    00
  • c# 钩子学习笔记

    C#钩子学习笔记 什么是钩子 Windows操作系统为我们提供了许多钩子(Hooks),如键盘钩子、鼠标钩子、Windows消息钩子、时间戳钩子等。钩子可以让我们在系统层面对各种事件消息进行拦截、监控、修改或者定制化输出等操作。 钩子的分类 Windows中的钩子有很多种,我们可以将它们大体分为两类: 系统钩子 (system-wide hook):作用于整…

    C# 2023年5月15日
    00
  • C# File.ReadAllText(string path):读取指定文件的所有文本内容

    C#的File.ReadAllText(string path)方法用于读取指定文件的所有文本内容,并以字符串形式返回。该方法适用于读取文本文件中的数据,如果尝试读取非文本文件(如二进制图像),则会导致方法执行失败。 方法参数 File.ReadAllText() 方法需要传入表示文件路径的字符串类型参数,指定要读取的文件。 返回值 File.ReadAll…

    C# 2023年4月19日
    00
  • C#实现简单的井字游戏实例

    C#实现简单的井字游戏实例攻略 简介 本文将介绍如何使用 C# 编程语言实现简单的井字游戏,并提供两个示例来帮助读者更好地理解。井字游戏是一种非常经典的零和博弈,可以用于人工智能的训练,也可以作为我们在学习开发游戏中的一个练习项目。 步骤 步骤1:创建新项目 首先,在 Visual Studio 中创建一个新的控制台应用程序项目。 步骤2:设置游戏板 我们需…

    C# 2023年6月6日
    00
  • C#将Sql数据保存到Excel文件中的方法

    关于“C#将Sql数据保存到Excel文件中的方法”,我可以提供以下攻略: 1.使用Microsoft.Office.Interop.Excel库保存 步骤1:安装Microsoft.Office.Interop.Excel库 在Visual Studio中安装Microsoft.Office.Interop.Excel库。 步骤2:引用命名空间 在文件头部…

    C# 2023年5月31日
    00
  • C#利用VS中插件打包并发布winfrom程序

    下面我将为您详细讲解“C#利用VS中插件打包并发布winfrom程序”的完整攻略。 1. 安装插件 首先,您需要在Visual Studio中安装一个名为“Visual Studio Installer Projects”的插件。该插件可在Visual Studio扩展市场中免费下载。安装完成后,重启Visual Studio以使插件生效。 2. 创建安装包…

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