在桌面/WPF 开发中,我们经常需要在按钮事件里先判断“能不能做”,再决定“怎么做”。如果校验不过,就直接返回;校验通过,才继续执行业务逻辑。
今天分享一个极简写法:if (!CheckStart()) return;,只需一行即可把校验与主流程解耦,让代码既干净又易读。


一、为什么推荐这种写法?

  1. 省掉嵌套:传统做法会把全部逻辑包在一层 if 里,缩进越来越深;用 return 提前终止,主流程保持“一马平川”。

  2. 语义直观:读代码时一眼就能知道——“校验不过就拉闸”。

  3. 复用方便CheckStart() 里可以放任何通用规则,比如

    • 端口是否已打开

    • 授权是否有效

    • 配置是否完整
      需求变了,只改一处即可。


二、示例

事件触发后,先执行 CheckStart() 进行一次性前置检查:

  • 若返回 false,立即中断流程;

  • 若返回 true,继续后续主逻辑。

private void Button_RFSwitch(object sender, RoutedEventArgs e)
{// 1. 前置校验:不通过直接返回if (!CheckStart()) return;// 2. 主流程:切换 RF 开关......
}

CheckStart()检查函数的定义

        private bool CheckStart(){if (vSG == null){MessageBox.Show("未初始化");return false;}return true;}

三、小结

一行 if (!CheckStart()) return;,看似不起眼,却是“防御式编程”的精髓:

  • 早失败、早返回

  • 逻辑分层、职责单一

  • 代码更短、可读性更高

下次写按钮事件,不妨试试这个小技巧,让你的 C# 代码瞬间清爽起来!

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

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

相关文章

炎热工厂救援:算法打造安全壁垒

高温天气下智慧工厂:算法赋能,安全救援无忧背景:极端高温下工厂的严峻挑战近年来,极端高温天气频发,部分地区气温接近甚至超过50℃。在这样酷热的环境中,工厂面临着诸多严峻问题。一方面,高温容…

pgsql模板是什么?

查找所有的数据库 select datname from pg_database运行该命令后,我们会发现其中出现了一些其它的数据库接下来,我们分析 template0 和 template1 的作用。template1 template1 是 PostgreSQL 默认用于创建新数据库的模板。当执行 CREATE DATABASE new_d…

LLM 不知道答案,但是知道去调用工具获取答案?

思考: LLM 自己“不知道”某个事实性问题的答案,但仍然能“知道”去调用工具获取正确答案,这听起来确实有点像个悖论该内容触及了大型语言模型(LLM)的核心局限性以及(Agents)的智能所在。实际上…

2025年7月11日学习笔记一周归纳——模式识别与机器学习

2025年7月11日学习笔记&一周归纳——模式识别与机器学习一.一周工作二.我的一些笔记汇总三.发现的一些新的学习资料和爱用好物1.百度网盘AI笔记:2.b站资料:3.听说的一些好书:一.一周工作 本周学习了清华大学张学工汪小我老师的模式识别与…

LeetCode 138题解 | 随机链表的复制

随机链表的复制一、题目链接二、题目三、分析四、代码一、题目链接 138.随机链表的复制 二、题目 三、分析 数据结构初阶阶段,为了控制随机指针,我们将拷贝结点链接在原节点的后面解决,后面拷贝节点还得解下来链接,非常麻烦。这…

【计算机存储架构】分布式存储架构

引言:数据洪流时代的存储革命“数据是新时代的石油” —— 但传统存储正成为制约数据价值释放的瓶颈核心矛盾:全球数据量爆炸增长:IDC预测2025年全球数据量将达175ZB(1ZB10亿TB)传统存储瓶颈:单机IOPS上限仅…

【Linux-云原生-笔记】数据库操作基础

一、什么是数据库?数据库就是一个有组织、可高效访问、管理和更新的电子化信息(数据)集合库。简单来说,数据库就是一个高级的Excel二、安装数据库并初始化1、安装数据库(MySQL)dnf search一下mysql数据库的…

HarmonyOS中各种动画的使用介绍

鸿蒙(HarmonyOS)提供了丰富的动画能力,涵盖属性动画、显式动画、转场动画、帧动画等多种类型,适用于不同场景的交互需求。以下是鸿蒙中各类动画的详细解析及使用示例:1. 属性动画(Property Animation&#…

CSP-S 模拟赛 10

T1 洛谷 U490727 返乡 思路 首先要意识到一个问题,就是如果所有人总分一定,那么是不会出现偏序的。 可以感性理解一下,就是对于 i,ji, ji,j, 若 ai≤aj,bi≤bja_i \leq a_j, b_i \leq b_jai​≤aj​,bi​≤bj​,那么…

CMD,PowerShell、Linux/MAC设置环境变量

以下是 CMD(Windows)、PowerShell(Windows)、Linux/Mac 在 临时/永久 环境变量操作上的对比表格:环境变量操作对照表(CMD vs PowerShell vs Linux/Mac)操作CMD(Windows)P…

MySQL(131)如何解决MySQL CPU使用率过高问题?

解决MySQL CPU使用率过高的问题需要从多个方面进行排查和优化,包括查询优化、索引优化、配置优化和硬件资源的合理使用等。以下是详细的解决方案和相应的代码示例。 一、查询优化 1. 检查慢查询 使用MySQL的慢查询日志来找到执行时间长的查询。 SET GLOBAL slow_que…

docker基础与常用命令

目录 一.docker概述 1.docker与虚拟机区别 2.Linux 六大命名空间 3.Docker 的核心技术及概念 二.docker部署安装 三.docker常用命令 1.搜索镜像 2.获取镜像 3.查看镜像信息 4.添加镜像标签 5.删除镜像 6.存出与载入镜像 7.上传镜像 8.创建容器 9.查看容器状态 1…

Cypress与多语言后端集成指南

Cypress 简介 基于 JavaScript 的前端测试工具,可以对浏览器中运行的任何内容进行快速、简单、可靠的测试Cypress 是自集成的,提供了一套完整的端到端测试,无须借助其他外部工具,安装后即可快速地创建、编写、运行测试用例,且对每一步操作都支持回看不同于其他只能测试 UI…

计算机毕业设计ssm基于JavaScript的餐厅点餐系统 SSM+Vue智慧餐厅在线点餐管理平台 JavaWeb前后端分离式餐饮点餐与桌台调度系统

计算机毕业设计ssm基于JavaScript的餐厅点餐系统0xig8788(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。扫码点单、手机支付、后厨实时出票已经成为食客对餐厅的基本预期。传统的…

wedo稻草人-----第32节(免费分享图纸)

夸克网盘:https://pan.quark.cn/s/ce4943156861 高清图纸源文件,需要的请自取

Jmeter函数的使用

函数名作用用法${__Random(,,)}${__RandomString(,,)}随机生成一些东西${__Random(000,999,)} ${__Random(${test1},${test2},)}${__RandomString(${__Random(3,9,)},asdfghjkl,)}${__time(,)}获取当前的时间戳,也可以定义格式${__CSVRead(,)}读取CSV文件的格式&…

Windows 用户账户控制(UAC)绕过漏洞

漏洞原理CVE-2021-31199 是一个 Windows 用户账户控制(UAC)绕过漏洞,CVSS 3.1 评分 7.8(高危)。其核心原理如下:UAC 机制缺陷:Windows UAC 通过限制应用程序权限提升系统安全性,但某…

comfyUI-controlNet-线稿软边缘

{WebUI&comfyUI}∈Stable Diffuision,所以两者关于ContrlNet的使用方法的核心思路不会变,变的只是comfyUI能够让用户更直观地看到,并且控制生图的局部过程。 之前的webUI中涉及到ContrlNet部分知识:SD-细节控制-CSDN博客 概…

SOEM build on ubuntu

1.配置 soem2.编译 soem3.结果4.记录一下自己的开发环境家里台式机

STM32--USART串口通信的应用(第一节串口通信的概念)

咱们今天呢给大家讲解咱们 stm32 开发当中的串口的应用啊 , 串口这个专题呢啊是我们那 个学习上必须要掌握的一个外设串口有什么作用呢,其实在我们以后的这个开发程序当中,咱们可能经常需要用到一些调试 信息,对吧? 啊…