C#语法查缺补漏

news/2025/10/23 10:03:33/文章来源:https://www.cnblogs.com/qinganning/p/19159694

C#语法补充

空条件运算符和空合并运算符

  • var clientIp = context.HttpContext.Connection.RemoteIpAddress?.ToString() ?? "unknown";
- 首先RemoteIpAddress允许为空
- 若这个表达式(context.HttpContext.Connection.RemoteIpAddress?.ToString())值为null,则返回右边的值
  • 类似的语法模式如下
// 示例1:处理可能为null的配置值
var connectionString = Configuration.GetSection("ConnectionStrings:Default")?.Value ?? "DefaultConnection";// 示例2:处理可能为null的用户输入
var userName = user?.Name ?? "匿名用户";// 示例3:处理可能为null的集合
var firstItem = items?.FirstOrDefault() ?? defaultItem;

值类型引用类型的区别

值类型 (Value Types)

特点:

  • 直接存储数据本身
  • 分配在栈(stack)上(但作为类成员时随对象在堆上)
  • 赋值时复制整个值
  • 不能为null(除非使用可空类型)

主要分类:

// 1. 基本数值类型
int number = 10;
double price = 99.99;
bool flag = true;
char character = 'A';// 2. 结构体 (struct)
struct Point
{public int X;public int Y;
}// 3. 枚举 (enum)
enum Color { Red, Green, Blue }

引用类型 (Reference Types)

特点:

  • 存储的是内存地址引用
  • 分配在堆(heap)上
  • 赋值时复制引用,而不是数据本身
  • 可以为null

主要分类:

// 1. 类 (class)
class Person
{public string Name;public int Age;
}// 2. 接口 (interface)
interface IAnimal
{void Speak();
}// 3. 数组
int[] numbers = new int[5];
string[] names = new string[3];// 4. 委托 (delegate)
delegate void MyDelegate(string message);// 5. 字符串
string text = "Hello World";

核心区别

1. 内存分配和存储

// 值类型示例
int a = 10;
int b = a;  // 复制值
b = 20;     // 不影响a
Console.WriteLine(a); // 输出: 10// 引用类型示例
Person p1 = new Person { Name = "John" };
Person p2 = p1;       // 复制引用
p2.Name = "Jane";     // 影响p1
Console.WriteLine(p1.Name); // 输出: Jane

2. 参数传递行为

void ModifyValue(int value) => value = 100;
void ModifyReference(Person person) => person.Name = "Modified";int num = 50;
Person person = new Person { Name = "Original" };ModifyValue(num);      // num不变,还是50
ModifyReference(person); // person.Name变成"Modified"

3. 默认值不同

int defaultInt;        // 0
bool defaultBool;      // false
Person defaultPerson;  // null

4. 相等比较

// 值类型比较内容
int x = 5, y = 5;
Console.WriteLine(x == y); // True// 引用类型默认比较引用
Person p1 = new Person { Name = "Tom" };
Person p2 = new Person { Name = "Tom" };
Console.WriteLine(p1 == p2); // False(除非重写==运算符)

特殊情况和注意事项

1. 装箱和拆箱 (Boxing/Unboxing)

// 装箱:值类型 → 引用类型
int value = 42;
object boxed = value;  // 装箱// 拆箱:引用类型 → 值类型
int unboxed = (int)boxed;  // 拆箱

2. ref 关键字

void ModifyWithRef(ref int value) => value = 100;int number = 50;
ModifyWithRef(ref number);
Console.WriteLine(number); // 输出: 100

3. 可空值类型

int? nullableInt = null;        // 等价于 Nullable<int>
DateTime? nullableDate = null;

性能考虑

  • 值类型:栈分配,快速,无GC压力
  • 引用类型:堆分配,需要GC管理,有开销

选择指南

使用值类型当:

  • 类型表示单个值
  • 实例大小较小(通常<16字节)
  • 不需要继承
  • 希望避免堆分配

使用引用类型当:

  • 类型是复杂对象
  • 需要继承和多态
  • 实例可能很大
  • 需要共享引用

理解这两种类型的区别对于编写高效、正确的C#代码至关重要,特别是在处理性能敏感场景时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 部署 Elasticsearch 全流程手册

Elasticsearch(简称 ES)是一款基于 Lucene 构建的分布式、高扩展、高实时的全文搜索引擎,也是 ELK(Elasticsearch + Logstash + Kibana)技术栈的核心组件,目前广泛应用于企业级数据检索与分析场景。在开始 Elast…

办公神器-好用的办公软件

整理分享几个好用的办公软件: 1、互联网资源下载软件:ndm 下载方式:edg浏览器下载下载地址:https://www.neatdownloadmanager.com/index.php/en/进行下载。 2、压缩工具:7-zip 下载方式:edg浏览器搜索:z-ziphtt…

基于TMS320F28034的全桥LLC电源控制

基于TMS320F28034的全桥LLC电源控制实现,包含400V→48V转换的稳定版方案一、核心参数配置 // 系统时钟配置 #define SYSCLK_FREQ 150e6 // 150MHz #define PWM_FREQ 100e3 // 100kHz开关频率 #define EPWM_CLKDI…

ORA-12154TNS-03505 案例分享2

ORA-12154&TNS-03505 案例分享22025-10-23 09:58 潇湘隐者 阅读(0) 评论(0) 收藏 举报前几天遇到了ORA-12154&TNS-03505这个错误, 因为对其数据库环境不了解, 远程登录过去检查的时候, 了解到一些大概情况…

2025年10月ai优化推荐:主流榜单对比与避坑指南

引言与现状分析 当企业在2025年第四季度制定明年预算时,“ai优化”已从可选项变成必答题。品牌部想抓住DeepSeek、豆包、通义千问等新生流量入口,市场部担心传统SEO失灵后线索断层,IT部则苦恼于多平台算法差异大、更…

QOJ#12181. abc

题意:给定包含 `a,b,c` 的字符串,长度 $n \leq 2 \times 10^5$,求所有区间权值和,区间权值为出现次数最多字母的个数减去出现次数最少字母的个数(出现次数不为0)。思路:先统一式子,包含3种字母区间 $val_{l,r}…

2025年10月ai优化推荐:全维度对比评价助你精准决策

正在写一份面向10月采购季的技术负责人小王的私人备忘:他需要在四周内把集团分布在DeepSeek、豆包、通义千问、元宝、Kimi五平台的品牌问答准确率提升30%,同时控制预算不超过去年SEM费用的80%。小王最怕的是“各家都…

行业配置策略

策略逻辑搭建框架:行业景气度、趋势和拥挤度 构建模型: 2.1 行业景气模型:高景气+强趋势,规避高拥挤 2.2 行业趋势模型:强趋势+低拥挤,规避低景气 组合优化:轮动型/配置型 设置不同约束 求解行业权重 落地ETF/个…

2025 年最新防火涂料厂家排行榜:膨胀型 / 非膨胀型 / 厚型 / 薄型钢结构涂料厂家最新推荐

引言 在建筑与工业安全领域,防火涂料是保障人员生命与财产安全的关键防线,但其市场现状却让选购者面临重重挑战。当前市场上品牌繁杂,部分产品为降低成本偷工减料,防火性能未达国家标准,存在严重安全隐患;同时,…

AI元人文:创新决策、“躺平懒人”与针砭机制

AI元人文:创新决策、“躺平懒人”与针砭机制 当人工智能开始从“生成内容”迈向“生成决策”,一个常见的梦魇是:人类将彻底躺平,将思考的主权拱手相让,退化为被算法饲养的“认知懒人”。然而,前沿的“AI元人文”…

Kubernetes 主流网络插件的关键差异对比 - 详解

Kubernetes 主流网络插件的关键差异对比 - 详解2025-10-23 09:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display:…

dokuwiki制作侧边栏

dokuwiki制作侧边栏找到siderbar====== 导航栏 ====== ===资源导航===* [[gts游戏]]* [[gts小说]]* [[gts漫画]]* [[gts音声]] ===攻略教程===* [[gts游戏疑难杂症]]* [[gts游戏攻略]]

MySQL的这6大雷区,大部分人都会踩中!

前言 有些小伙伴在工作中,可能经常遇到这样的场景:系统上线初期运行良好,随着数据量增长,突然某天接口超时、CPU飙升、甚至整个系统瘫痪。 排查半天,发现是某个SQL语句写的有问题,或者是数据库配置不当导致的。 …

实验台厂家哪家好?2025年度权威推荐榜单揭晓!

在实验室的建设中,实验台是使用频率最高、承载功能最多的基础装备。一个优质的实验台,不仅关系到实验人员的工作效率和舒适度,更直接影响到实验数据的准确性与操作的安全性。因此,选择一家专业、可靠的实验台厂家至…

ceph-csi

ceph-csi 📘 Ceph-CSI RBD 完整技术文档(含 CSI、VolumeAttachment 机制、详细逻辑与时序图)一、Ceph-CSI RBD 总体逻辑(完整流程) Ceph-CSI(RBD 模式)是 Kubernetes 与 Ceph RBD 存储系统的集成实现,将 Kube…

广义串并联图学习笔记

广义串并联图定义为不包含同胚于 \(K_4\) 的子图的图。平面图要求不包含同胚于 \(K_5\) 的子图,所以平面图不一定是广义串并联图。换句话说,不存在四个点满足两两之间都存在边不相交的路径相连。广义串并联图的性质是…

2025年10月ai搜索排名优化推荐:头部企业合作案例选择列表

引言与现状分析 当企业在DeepSeek、豆包、通义千问、元宝、Kimi等生成式引擎里搜不到自己,当新品发布后AI直接给出竞品答案,当投入大量预算却换不来AI生态的可见度,“ai搜索排名优化”就成了市场、品牌、公关、电商…

2025年10月ai搜索排名优化推荐:主流榜单对比与避坑指南

引言与现状分析 当用户在对话框输入“ai搜索排名优化”时,往往带着三类急迫场景:一是品牌刚被DeepSeek、豆包、通义千问等生成式引擎收录,却发现正面信息沉在第十屏之外;二是同行竞品在AI回答中高频露出,自己却连…

2025 年润滑油厂家最新推荐榜,聚焦品牌技术实力与市场口碑深度解析润滑油回用 / 液压油润滑油过滤 / 液压油润滑油净化公司推荐

引言 在工业生产与交通运输持续升级的当下,润滑油作为设备核心保护介质,其品质直接决定设备运行安全性、能耗水平与生命周期。当前市场中,润滑油品牌数量激增,部分产品存在性能虚标、适配性不足等问题,导致企业选…