当前位置: 首页 > news >正文

石家庄做网站制作公司做公司点评的网站

石家庄做网站制作公司,做公司点评的网站,拓展如何在网上推广,网站位置导航C# 中鲜为人知的强大运算符 C# 还提供了一些"冷门"但功能强大的运算符,这些运算符在特定场景下能极大简化代码并提高效率。 1. 空合并赋值运算符 ?? // 传统写法 if (variable null) {variable defaultValue; }// 使用 ?? variable ?? defaultVal…

C# 中鲜为人知的强大运算符

C# 还提供了一些"冷门"但功能强大的运算符,这些运算符在特定场景下能极大简化代码并提高效率。

1. 空合并赋值运算符 ??=

// 传统写法
if (variable == null)
{variable = defaultValue;
}// 使用 ??=
variable ??= defaultValue;

功能
当变量为 null 时,将右侧的值赋给它

实际应用

// 延迟初始化
private List<Item> _items;
public List<Item> Items => _items ??= new List<Item>();// 配置默认值
void LoadSettings()
{_qualityLevel ??= QualityLevel.High;_resolution ??= new Resolution(1920, 1080);
}

2. 空条件运算符 ?.?[]

// 安全访问成员
string name = user?.Profile?.Name;// 安全访问索引器
int? firstScore = scores?[0];// 安全调用方法
user?.Validate();

功能
在访问成员、调用方法或访问索引器时,如果对象为 null,则返回 null 而不是抛出异常

实际应用

// Unity 中安全访问组件
Rigidbody rb = go?.GetComponent<Rigidbody>();// 安全访问字典值
var config = settings?.GetSection("Graphics")?["Resolution"];

3. 范围运算符 ..

int[] numbers = { 0, 1, 2, 3, 4, 5 };
var slice = numbers[1..4]; // [1, 2, 3]
var allButFirst = numbers[1..]; // [1, 2, 3, 4, 5]
var lastThree = numbers[^3..]; // [3, 4, 5]

功能
创建数组或集合的切片视图

实际应用

// 处理部分数据
ProcessFrames(videoFrames[10..20]);// 获取子字符串
string domain = email[(email.IndexOf('@') + 1)..];

4. 索引运算符 ^

int[] numbers = { 0, 1, 2, 3, 4, 5 };
int last = numbers; // 5
int secondLast = numbers; // 4

功能
从集合末尾开始索引

实际应用

// 获取路径最后部分
string fileName = path.Split('/');// 检查最后几个元素
if (samples[^3..].All(s => s > threshold))
{// 最后三个样本都超过阈值
}

5. 模式匹配中的 isswitch 表达式

// is 模式匹配
if (obj is string { Length: > 5 } s)
{Console.WriteLine($"长字符串: {s}");
}// switch 表达式
var message = input switch
{int i when i > 0 => "正数",int i when i < 0 => "负数",int => "零",_ => "非数字"
};

功能
强大的类型检查和值提取

实际应用

// Unity 组件处理
void ProcessComponent(Component comp)
{switch (comp){case Rigidbody rb:rb.velocity = Vector3.zero;break;case Renderer rend when rend.material != null:rend.material.color = Color.red;break;case null:Debug.LogWarning("组件丢失");break;}
}

6. 弃元运算符 _

// 忽略不需要的输出参数
_ = int.TryParse("123", out _);// 忽略不需要的返回值
_ = Task.Run(() => BackgroundProcess());// 模式匹配中忽略部分值
if (point is (0, _))
{// X坐标为0的所有点
}

功能
明确表示忽略某个值

实际应用

// Unity 事件处理
button.onClick.AddListener(_ => 
{// 不需要事件参数PlaySound();
});// 解构忽略部分值
var (x, _, z) = GetPosition();

7. 命名参数和可选参数

void ConfigureServer(string host, int port = 8080, bool ssl = false)
{// ...
}// 调用时
ConfigureServer("example.com", ssl: true);

功能
提高代码可读性并简化重载

实际应用

// Unity 实例化对象
Instantiate(prefab, position: spawnPoint.position,rotation: Quaternion.identity,parent: transform
);// 创建颜色
var color = new Color(r: 0.5f, g: 0.7f, b: 1f);

8. 插值字符串 $

string name = "Alice";
int age = 30;
string message = $"{name} is {age} years old";

功能
更简洁的字符串格式化

高级用法

// 格式控制
$"Price: {price:C2}" // 货币格式// 表达式计算
$"Area: {width * height}"// 对齐
$"{"Name",-10} {"Age",5}"

9. 联合 switch 表达式

var result = operation switch
{"add" => a + b,"sub" => a - b,"mul" => a * b,"div" when b != 0 => a / b,_ => throw new InvalidOperationException()
};

功能
更简洁的模式匹配语法

实际应用

// Unity 状态处理
currentState = input switch
{InputType.Jump when isGrounded => PlayerState.Jumping,InputType.Attack => PlayerState.Attacking,InputType.Dash when canDash => PlayerState.Dashing,_ => currentState
};

10. 委托合并运算符 +-

event Action OnEvent;void Subscribe()
{OnEvent += Handler1;OnEvent += Handler2;
}void Unsubscribe()
{OnEvent -= Handler1;
}

功能
管理事件订阅

实际应用

// Unity 事件管理
button.onClick.AddListener(OnClick);
// ...
button.onClick.RemoveListener(OnClick);// 多播委托
Action multiAction = MethodA;
multiAction += MethodB;
multiAction(); // 调用 MethodA 和 MethodB

实用技巧:组合使用运算符

// 安全访问并设置默认值
string username = user?.Profile?.Name ?? "Guest";// 安全访问数组元素
int? score = scores?[index] ?? 0;// 模式匹配与空检查
if (obj is Player { Health: > 0 } player)
{player.Respawn();
}

这些运算符虽然相对"冷门",但在实际开发中能极大提升代码的简洁性。

http://www.dtcms.com/a/557493.html

相关文章:

  • Git指令集
  • 基于边缘信息提取的遥感图像开放集飞机检测方法
  • 前端基础知识---Promise
  • Java 基础——函数式编程
  • webkitx(Android WebView 最佳实践库)
  • 调查网站做调查不容易过横栏建设网站
  • 勐海县住房和城乡建设局网站南昌做网站费用
  • 感知上下文并可解释地预测合成致死药物靶点的大语言模型研究
  • AI研究-117 特斯拉 FSD 视觉解析:多摄像头 - 3D占用网络 - 车机渲染,盲区与低速复杂路况安全指南
  • 二级域名可以做网站吗免费个人博客网站模板下载
  • 复原大唐3d项目测试版
  • 2024年MySQL 下载、安装及启动停止教程(非常
  • 兰州百度网站建设百度网站关键词优化在哪里做
  • Redis——Windows安装
  • 微信网站开发视频教程免费的黄金软件
  • 【高级机器学习】0. Machine Learning 介绍
  • 昆明城乡和住房建设局网站网站做5级分销合法吗
  • .NETCore、.NET 7 和 RabbitMQ 的发布-订阅模式
  • Crashpad 在windows下编译和使用指南
  • 基于SpringBoot+Vue的农产品销售系统【协同过滤推荐算法+可视化统计】
  • 基于flet的一款windows桌面应用,实现了浏览图片、音乐、小说、各种资源的功能
  • 【开题答辩过程】以《基于微信小程序的线上讲座管理系统》为例,不会开题答辩的可以进来看看
  • 怎么做好网站建设新手怎么开传媒公司
  • 2025年8月AGI月评|AI开源项目全解析:从智能体到3D世界,技术边界再突破
  • CSP-J/S 2025 游记
  • 深入洞察:业务流程从概念到实践
  • realloc用法
  • 智慧团建网站登录电脑版装饰工程有限公司的经营范围
  • STM32学习(MCU控制)(SPI and Flash 存储)
  • 网站推广有哪些方案pr免费模板网站