C# 6.0草案规范:面向对象与类型安全编程

需积分: 21 4 下载量 116 浏览量 更新于2024-07-15 收藏 3.25MB PDF 举报
C# 6.0 草稿规范是一个关键文档,它是 Microsoft 的 C# .NET Framework 编译器遵循的标准,尤其是 ECMA-334 和 ISO/IEC 23270。C# 是一种设计简洁且类型安全的编程语言,深受C、C++和Java程序员的喜爱,它的核心理念是面向对象编程和组件化。 在 C# 6.0 中,语言的主要特性包括: 1. **介绍**: C# 是一款面向对象的语言,强调易用性和可靠性,它提供了内存管理(如垃圾回收),异常处理机制,以及类型安全特性,防止未初始化变量的读取和不安全的类型转换。 2. **词法结构和基本概念**: C# 采用了统一的类型系统,所有类型都继承自 `object` 类型,这意味着它们共享通用操作。这有助于简化代码并支持不同类型间的交互。同时,它区分了引用类型(如类和结构)和值类型(如整数和浮点数),以适应不同的内存管理策略。 3. **核心语言元素**: - **类型与变量**:支持基本类型(如 int 和 double)以及用户定义的类型,变量的声明和初始化规则。 - **转换**:明确的类型转换规则,旨在减少潜在的运行时错误。 - **表达式和语句**:C# 提供了一系列丰富的表达式和语句结构,用于构建复杂的逻辑和控制流程。 - **命名空间和类/结构**:组织代码的重要组成部分,支持封装和模块化。 - **数组和接口**:数组作为数据集合,接口用于实现多态性。 - **枚举**:用于定义一组有限的常量集合。 - **委托和事件**:用于函数指针和事件驱动编程。 - **异常处理**:通过 try-catch-finally 语句块来管理程序的错误和异常情况。 - **特性(Attributes)**:元数据标记,用于提供额外的信息或实现自定义行为。 - **不安全代码**:尽管类型安全,但有时仍允许使用 `unsafe` 关键字处理底层内存操作。 4. **版本控制**: C# 版本控制对于保持程序和库之间的兼容性至关重要。它通过特定的语法更改和新特性引入规则,如 virtual 和 override 的区别、方法重载决策以及对显式接口的支持,确保升级过程中最小的中断。 5. **Hello World 示例**: 提供了一个简单的 `Hello, World` 示例,展示了如何使用 `using` 声明导入 System 库,并在 `Hello` 类的 `Main` 方法中输出字符串。 C# 6.0 草稿规范概述了该语言的核心概念、语法细节和版本管理策略,对于深入理解并开发高质量的 C# 程序至关重要。通过遵循这份规范,开发者可以更好地构建健壮、类型安全的软件组件,促进团队协作和项目稳定性。

优化这段代码:if (icbcDtlRsp.getBillSta().equals("CS01") && icbcDtlRsp.getRangeStage().equals("TF0101")) { //CS01已出票 & TFO101待收票---010004出票已登记 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_CPYDJ, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 } else if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ) && icbcDtlRsp.getBillSta().equals("CS01") && icbcDtlRsp.getRangeStage().equals("TF0302")) { //CS01已出票 & TF0302已锁定--- 020001承兑待签收 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDDQS, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 } else if (ecdsDrftInf.getDrftOrgStat().equals(ECDSConstants.DRAFT_STATUS_CPYDJ) && icbcDtlRsp.getBillSta().equals("CS02") && icbcDtlRsp.getRangeStage().equals("TFO101")) { //CS02已承兑 & TFO101待收票---020006承兑已签收 ecdsDrftInf.setDrftSndStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftSndStat())); // 票据发送人状态 ecdsDrftInf.setDrftRcvStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftRcvStat())); // 票据接收人状态 ecdsDrftInf.setDrftCurrStat(getValueOrDefault(ECDSConstants.DRAFT_STATUS_TSCDYQS, ecdsDrftInf.getDrftCurrStat())); // 人行当前状态 }

2023-06-01 上传

SELECT DISTINCT c.ID AS id, c.NAME AS contName, c.CONTRACT_NO AS contractNo, c.INSTANCE_ID AS instanceId, c.UNDERTAKE_DEPT_ID AS remindDeptId, c.UNDERTAKE_DEPT_NAME AS sendDeptName, c.CREATE_USER_ID, c.CREATE_USER_NAME AS contractOpteraterName, c.PLAN_STATE AS planState, c.PLAN_STATE_NAME AS planStateName, aw.INSTANCE_ID AS inId, aw.CREATE_TIME AS sendTime FROM ( SELECT c.* FROM ( SELECT c.* FROM ( SELECT c.ORIGINAL_CONTRACT_ID, MAX(CREATE_TIME) CREATE_TIME FROM CONTRACT_DRAFT.C_CONTRACT_INFO c WHERE c.ORIGINAL_CONTRACT_ID IS NOT NULL AND c.ORIGINAL_CONTRACT_ID != '' GROUP BY c.ORIGINAL_CONTRACT_ID ) t LEFT JOIN CONTRACT_DRAFT.C_CONTRACT_INFO c ON t.ORIGINAL_CONTRACT_ID = c.ORIGINAL_CONTRACT_ID AND t.CREATE_TIME = c.CREATE_TIME UNION ALL SELECT c.* FROM CONTRACT_DRAFT.C_CONTRACT_INFO c WHERE ( c.ORIGINAL_CONTRACT_ID IS NULL OR c.ORIGINAL_CONTRACT_ID = '' ) AND c.ID NOT IN ( SELECT c.ORIGINAL_CONTRACT_ID FROM CONTRACT_DRAFT.C_CONTRACT_INFO c WHERE c.ORIGINAL_CONTRACT_ID IS NOT NULL AND c.ORIGINAL_CONTRACT_ID != '')) c WHERE c.deleted_flag = 0 AND c.BELONG = 1 AND sysdate > c.end_date AND c.plan_state IN (4100, 4110, 4120, 4200, 4210, 4220, 5100, 5110, 5120) ) c INNER JOIN (SELECT INSTANCE_ID,create_time,state FROM CONTRACT_DRAFT.C_ACTIVITY_WORKITEMS WHERE state = 'Waiting') aw ON c.INSTANCE_ID = aw.INSTANCE_ID LEFT JOIN (SELECT deleted_flag,CONT_ID FROM CONTRACT_DRAFT.C_GET_PAY_PLAN WHERE deleted_flag = 0 ) g ON c.ID = g.CONT_ID LEFT JOIN CONTRACT_DRAFT.C_OUR_ENTITY_INFO oe ON c.OUR_ENTITY_ID = oe.ID AND oe.DELETED_FLAG = 0 ORDER BY aw.CREATE_TIME DESC 优化

2023-07-08 上传