C#学习-new、var、check、try catch操作符

ABAP 7.40+新语法:从内联声明到表表达式的现代化编程实践 在SAP ABAP开发领域,语法演进是提升代码质量和开发效率的关键。从基础概念来看,现代编程语言普遍追求简洁性和表达力,这背后是编程范式从命令式向声明式的转变。其技术原理在于通过编译器优化和运行时支持,允许开发者用更少的代码完成相同的逻辑,减少冗余和潜在错误。这种演进的技术价值在于显著提升代码可读性、可维护性,并降低认知负担。在应用场景上,尤其适用于数据处理、业务逻辑实现和报表开发等高频领域。本文聚焦于ABAP 7.40+引入的**内联声明**和**表表达式**等核心特性,通过对比传统语法,详解其如何简化数 阅读详情

代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace new操作符
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var x = 100;    //var 是隐型变量,弱变量 C#中无法更改已确定的变量类型
            Console.WriteLine(x.GetType().Name);

            var Y = 100D;
            Console.WriteLine(Y.GetType().Name);

            var z = 100L;
            Console.WriteLine(z.GetType().Name);

            var c = 100.0;
            Console.WriteLine(c.GetType().Name);
#if false
            Form myForm = new Form() {Text = "hello", FormBorderStyle = FormBorderStyle.SizableToolWindow }; //new操作符可以调用初始化器
            myForm.ShowDialog();

            new Form() { Text = "hello2" }.ShowDialog();   //没有引用变量引用他,所以后面垃圾收集器会处理销毁他,一次性使用  
#endif
            int[] myArray = new int[10];
            int[] myArray2 = { 1, 2, 3, 4 };

            Console.WriteLine("     ");
            Console.WriteLine("         以下内容为学习 var 隐式类型变量声明 的关键字");
            var person = new { Name = "Mr.Okay", Age = 34 };
            Console.WriteLine(person.Name);
            Console.WriteLine(person.Age);
            Console.WriteLine(person.GetType());
            Console.WriteLine(person.GetType().Name);
            Console.WriteLine(person.Age.GetType().Name);
            Console.WriteLine("     ");

            Console.WriteLine("         以下内容为学习checked 与unchecked关键字");
            uint myX = uint.MaxValue;
            Console.WriteLine(myX);
            Console.WriteLine(Convert.ToString(myX, 2));    //以二进制显示
            uint myY = myX + 1;
            Console.WriteLine("以下打印未检查,导出输出溢出");
            Console.WriteLine(myY);
//            uint myZ = checked(myX + 1);    //打印报错--不注释的话,后面不执行

            try
            {
                Console.WriteLine("以下再次打印未检查,导出输出溢出");
                uint myC = unchecked(myX + 1);
                Console.WriteLine(myC);
            }
            catch (OverflowException ex)
            {
                //Console.WriteLine(ex.Message);
                Console.WriteLine("there's overflow");  //此处未执行
            }

            checked // 启用溢出检查  //{}内的内容都进行核查,异常都不执行,故  Console.WriteLine(myA);也不打印
            {
                Console.WriteLine("----myA----");
                uint myA = 0;
                try // 使用 try-catch 捕获溢出异常
                {
                    myA = myX + 1; // 如果 myX 接近 uint 最大值(4294967295),此处会溢出
                    Console.WriteLine(myA); // 不会执行,因为溢出导致抛出异常
                }
                catch (OverflowException ex) // 捕获溢出异常
                {
                    Console.WriteLine("以下证明,上面的try中溢出,没有进行赋值"); // 不会执行,因为溢出导致抛出异常
                    Console.WriteLine(myA); // 不会执行,因为溢出导致抛出异常
                    Console.WriteLine("myA overflow"); // 打印溢出信息
                }
            }
            Console.WriteLine("------------------------结束------------------");
        }
    }
}

结果

在这里插入图片描述

总结

# 总结
checked:

启用算术操作的溢出检查。
当发生溢出时,抛出 OverflowException。
try-catch:

捕获异常并提供处理逻辑,避免程序直接崩溃。
输出逻辑:

发生异常时,try 块剩余代码不会执行,控制权转移到 catch 块。
在实际开发中,使用 checked 通常适用于需要严格保证数值计算范围的场景,比如金融计算或精确的数学操作。
面向对象与异常处理中的人因陷阱:接口契约、异常控制流与不变量设计 面向对象编程的核心并非语法封装,而是通过接口定义能力契约,以约束调用方行为;异常处理的本质也不是错误跳转,而是携带上下文的结构化控制流机制。二者共同构成语言级的设计边界——接口即契约、异常即控制流、不变量即设计边界。这些概念决定了代码可维护性、团队协作效率与系统鲁棒性。在C++、Java、Rust等主流语言实践中,错误常源于对契约粒度、异常分层和状态守恒的忽视,而非技术选型本身。本文聚焦工程落地中的典型人因陷阱,提供可验证的接口设计四步法、三层异常体系与不变量自动化检查方案。 阅读详情

相关推荐

Oracle中Guid主键适配方案:RAW(16)与CHAR(38)实战对比

Guid(全局唯一标识符)作为分布式系统常用主键类型,在跨数据库迁移时面临类型契约不一致的核心挑战。其原理在于.NET的DbType.Guid在SQL Server中映射为UniqueIdentifier,而在Oracle中被强制转为Raw类型,触发CoerceValue()阶段因Guid未实现IConvertible导致InvalidCastException。该问题本质是NHibernate类型系统与OracleClient驱动在值绑定环节的协同失效,技术价值在于保障主键数据流的安全、可读与可调试。典型

clugcpne10995的博客 460

C++内存管理核心:深入解析new与delete操作符的底层机制与最佳实践

在C++编程中,内存管理是开发者必须掌握的核心概念,它直接关系到程序的性能、稳定性和安全性。其基本原理是通过手动控制堆内存的分配与释放,实现资源的精确管控。这一机制的技术价值在于提供了极致的性能优化空间和底层硬件访问能力,是开发高性能系统软件、游戏引擎和嵌入式应用的关键。在实际应用场景中,无论是处理Excel文件(如new XSSFWorkbook())还是管理数据库连接池,都离不开对动态内存的精细操作。然而,手动管理也带来了内存泄漏和野指针等经典问题,这正是深入理解new和delete操作符的必要性所在。

weixin_34275734的博客 438

JSON注入漏洞原理与防御:从Kali Linux实战到安全开发实践

在Web应用开发中,数据交换格式JSON(JavaScript Object Notation)因其轻量、易读的特性被广泛应用于RESTful API和前后端分离架构。其核心原理是通过键值对结构实现数据的序列化与反序列化,但若应用程序在处理JSON数据时未严格区分数据与代码的边界,便可能引发安全风险。JSON注入正是利用这一模糊性,通过构造恶意JSON结构或内容,干扰应用程序逻辑、窃取数据或触发非预期行为,其技术价值在于揭示了现代Web应用中数据解析层的信任危机。典型的应用场景包括API参数污染、客户端模板

weixin_30514745的博客 308

c# 匿名类型创建实例(var 和 new)

namespace ConsoleApp1 { class Program { static void Main(string[] args) { var person = new { Name = "LL", Age = 34 }; // Name:LL, Age:34 Console.WriteLine($"Name:{person.Name}, Age:{person.Age}");

weixin_45129218的博客 1237

CppFlow:轻量级C++封装库,简化TensorFlow模型部署与推理

在机器学习模型部署领域,将训练好的模型集成到C++生产环境中是一项常见需求。其核心原理在于通过模型序列化与运行时加载,实现跨语言、跨平台的推理能力。这项技术的价值在于能够充分利用C++的高性能、低延迟特性,同时复用Python生态中丰富的模型训练工具。应用场景广泛覆盖嵌入式设备、高性能服务器、游戏引擎以及需要与现有C++代码库深度集成的工业软件。针对TensorFlow模型,直接使用其C API进行集成往往面临接口复杂、内存管理繁琐和版本兼容性等挑战。CppFlow作为一个轻量级的头文件-only封装库,通

weixin_33895695的博客 551

关系型数据库核心原理与SQL Server实战入门

关系型数据库是结构化数据管理的基石,其核心基于Codd提出的关系模型,通过表、行、列和完整性约束实现对现实世界的精确抽象。SQL作为声明式查询语言,屏蔽底层执行细节,使开发者聚焦业务逻辑而非算法实现。它支撑着金融交易、ERP、BI分析等强一致性关键场景,与NoSQL形成互补而非替代。掌握SQL不仅是写SELECT语句,更涉及索引设计、执行计划解读、事务安全与防注入实践。本文以SQL Server为实操载体,覆盖环境搭建、SSMS高效使用、DML/DDL编写规范及典型性能避坑,助力开发者从‘能查’迈向‘懂因’

weixin_30268921的博客 368

C#基础—— check、lock、using语句归纳

一、C#语句概述(这部分内容来自网络) 语句(statement):程序的活动是通过语句来表达的。C#支持多种不同的语句,许多语句是以嵌入语句的形式定义的。 块(block):允许在只能使用单个语句的上下文中编写多个语句。块由一个括在大括号“{}”内的语句列表组成。   声明语句(declaration statement):用于声明局部变量和常量。 表达式语句(expression st...

weixin_34372728的博客 306

C#遍历得到checkboxlist选中值和设置选中项的代码

得到选中项的value值并拼接成一个字符串返回 public string GetChecked(CheckBoxList checkList, string separator) { string str = ; for (int i = 0; i < checkList.Items.Count; i++) { if (checkList.Items[i].Selected) { str += checkList.Items[i].Value + separator; } } return str; } 有选中字符串 分割之后遍历选中对应value值得选项 public void S

C#中的变量类型var

什么是var? 在.Net3.5(包括.NET CF3.5)以后C#提供了一个新的变量类型var,也就是我们俗称的“推断类型”,编译器会根据上下文来判断你到底是想用什么类型的; var的使用场景? 当我们不知道一个变量是什么类型时,我们直接用var初始化就可以。比如我们不知道B是什么类型,我们可以直接使用var b=new B();我们就直接实例化了一个B。如果我们把断点加到这句话上,我们运...

weixin_30706691的博客 316

手把手教你用ECharts打造炫酷3D饼图(附完整源码)

本文详细介绍了如何使用ECharts创建炫酷的3D饼图,从环境配置到完整源码实现,涵盖参数解析、视觉优化和交互增强技巧。通过实战案例,帮助开发者快速掌握3D数据可视化技术,提升数据展示效果。

weixin_29031057的博客 280

Hi3516CV610开发板实战:从零搭建智能视觉监控系统

本文详细介绍了从零开始基于Hi3516CV610开发板搭建智能视觉监控系统的完整实战流程。涵盖硬件连接、系统配置、摄像头集成、网络设置、固件烧录到视频处理与智能分析功能开发,提供了丰富的实践经验和调试技巧,帮助开发者快速掌握嵌入式视觉系统开发。

vvv99的博客 562

C# var 关键字以及使用建议

本文介绍了C#var关键字及其使用建议。

mingupup的博客 1173

区块链入门:用账本、乐高和三台旧电脑讲懂分布式账本

区块链是一种去中心化的分布式账本技术,其核心原理是通过密码学哈希、共识机制和链式结构实现数据不可篡改与多方共同验证。它不依赖单一中心,而是将交易记录同步复制到多个节点,依靠数学规则而非人工信任达成一致,从而在数字世界构建可验证的信用基础设施。这种‘集体见证’模式显著提升了系统抗单点故障与人为干预的能力,广泛应用于供应链溯源、数字身份、教育管理及公益透明等需强信任保障的场景。本文以账本类比、乐高拆解和Ganache实操为线索,面向零基础读者通俗解析哈希值、挖矿与智能合约等关键概念。

weixin_30517215的博客 274

Halcon算子翻译——try

名称 try - 开始一个程序分段,检测并捕获异常。 用法 try( : : : ) 描述   使用算子try,catch,endtry和throw可以在HDevelop中实现动态的异常处理,这相当于C ++和C#中的异常处理。通过算子try,catch和endtry,形成两个代码分段:第一个分段(try.. catch)包含执行正常程序逻辑的被监控程序行。 第二个分段(catch ....

weixin_34120274的博客 563

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分

2301_80338712的博客 4130

基于知识图谱的农作物病虫害问答系统设计与实现

基于规则的问题分类是自问答系统诞生以来就一直存在的方式,主要代表就是众多的专家系统,构建专家系统采用的是规则分类器,优点是能够对特定领域、特征明显的问题进行高效精准问答,但是。,在问答系统中,问题以语音及文本字符等自然语言形式输入,利用问答系统的内部的逻辑处理模块,通过自然语言处理技术获得输入问句的详细语义信息,再经过知识检索、置信分析等步骤,自然语言处理中,用于文本分类任务的机器学习方式有两种,一种用传统的机器学习,如 NBC、SVM 等,另一种采用深度学习,如 CNN 和 RNN 等。

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2166

C++内存管理:从new/delete原理到智能指针实战

内存管理是编程语言的核心概念,它决定了程序如何分配、使用和释放计算机内存资源。在C++中,动态内存管理通过new和delete操作符实现,它们分别负责在堆内存中分配空间并构造对象、以及调用析构函数并释放内存。理解其底层机制对于编写高性能、无内存泄漏的代码至关重要,尤其是在处理复杂数据结构和资源密集型应用时。现代C++通过智能指针(如unique_ptr和shared_ptr)构建了自动内存管理的安全网,有效防止了内存泄漏和悬空指针等常见问题。本文结合内存泄漏排查和性能优化等实际场景,深入探讨了从基础语法到高

weixin_34186128的博客 343

广东省道路工程检测练习试题(判断题)真题

按下式计算小于某粒径颗粒质量百分数:X=(A/B)x100( )49.、挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测。95.挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测( )107.以干密度 pd 为纵坐标,含水率w为横坐标,绘 pd-w 关系曲线,曲线上峰值点的纵、横坐标分别为最大干密度和最佳含水率( )

ZShy001238的博客 684

C++内存管理:new/delete与malloc/free核心差异与实战指南

内存管理是编程语言的核心基础,它决定了程序如何高效、安全地使用系统资源。在C++中,动态内存分配涉及两个关键概念:C语言风格的malloc/free函数和C++特有的new/delete操作符。从原理上看,malloc/free是纯粹的内存分配器,只负责原始内存块的申请与释放;而new/delete则是对象生命周期管理器,在分配内存的同时自动调用构造函数和析构函数,实现了C++的RAII(资源获取即初始化)核心机制。这种设计差异带来了类型安全、异常处理、与面向对象特性深度协同等技术价值,使得new/dele

weixin_30776545的博客 455

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

华为OD机考 新系统真题 【区分奇偶的数组排序】

华为OD机试 新系统真题【区分奇偶的数组排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【区分奇偶的数组排序】多语言题解。

qq_45776114的博客 511

Rider 2025:.NET 开发者的生产力核弹与跨语言工程实践

IDE(集成开发环境)是现代软件开发的核心基础设施,其本质是编译器、调试器、语言服务与项目系统的智能协同体。原理上,它依赖抽象语法树(AST)解析、符号索引与语义分析引擎实现代码理解;技术价值在于将重复性配置、环境适配与错误预防转化为自动化能力,显著降低认知负荷。典型应用场景覆盖 C# 上位机开发、VB.NET 遗留系统现代化、F# 函数式建模及多语言混合项目协作。尤其在 .NET 生态快速演进(如 .NET 8/9、C# 12、源生成器、AOT 编译)背景下,传统 IDE 易陷入‘能跑’但‘难稳’的困境。

weixin_33824363的博客 339

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Leno 语言入门指南

《Leno语言入门指南》摘要 Leno是一门介于Python和Go之间的静态类型检查脚本语言,融合了动态语言的灵活性和静态类型的安全性。该指南全面介绍了Leno的核心特性: 基础语法:支持类型推断(var)、任意精度整数、并行赋值和代码块作用域 类型系统:包含int(自动处理溢出)、float、string、bool等基础类型,以及泛型数组和字典 控制流:提供if/switch条件语句、多种for循环形式以及类型守卫功能 函数编程:支持高阶函数、匿名函数、闭包和默认参数 面向对象:通过struct实现,包含

cheng8214的专栏 313

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++动态内存与泛型编程底层实战指南

C++动态内存管理与泛型编程是系统级开发的核心基础能力。其本质涉及栈/堆/全局/常量区的物理边界约束、new/delete的三步操作链及RAII资源生命周期控制;泛型则依托编译期模板实例化,实现类型安全的单态代码生成。技术价值在于提升性能(如向量化优化)、保障安全(避免UAF、内存泄漏)并支撑高可靠场景——服务端中间件需精细堆管理,游戏引擎依赖低开销模板,嵌入式系统要求确定性内存布局。本文聚焦C++动态内存、new、delete、泛型编程四大关键词,结合217个真实内存坑与43次模板编译失败经验,提供可直接

weixin_30781433的博客 328

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

xLua热更新异常处理终极指南:10大策略构建健壮防御体系

在Unity游戏开发中,热更新技术是实现快速迭代和线上问题修复的关键手段,它允许开发者在无需重新发布应用包体的前提下动态更新游戏逻辑与资源。其核心原理是通过在运行时加载并执行外部脚本(如Lua),实现对应用行为的动态修改。这项技术的核心价值在于极大缩短了问题修复周期,提升了运营灵活性。然而,动态代码执行也引入了稳定性风险,如脚本错误导致的崩溃、资源加载失败等问题,因此构建一套完善的异常处理与防御机制至关重要。常见的应用场景包括线上Bug修复、活动内容更新、逻辑调优等。本文聚焦于**xLua**这一热更新方案

weixin_34221773的博客 340

C++设计原理——异常处理(终止语义、多层传递、静态检查、断言处理、与异步信号关系)

C++异常处理机制解析 本文探讨了C++异常处理机制的背景、设计原则和实现特点。传统C语言错误处理方式在大型系统中存在代码混杂、构造函数无返回值等问题,促使C++引入异常处理机制。C++异常设计遵循零开销原则(仅异常路径有性能开销)、类型安全和资源安全(催生RAII),采用终止语义而非唤醒语义,确保与C的兼容性。终止语义通过简单可靠的控制流处理错误,而唤醒语义则通过"重试循环+回调函数"模式模拟实现。异常处理使错误可跨层级传递,解决了构造函数和运算符重载中的错误处理难题,同时保持代码清晰性和系统稳健性。

韩江雪de 小屋 433
上一篇: C#学习-typedef用法以及结构体、枚举体、引用变量的初始值
下一篇: C#学习-delegate
sfdely
博客等级 码龄7年 34粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值