编辑
2025-09-18
C#
00

在C#编程中,公式计算是一个常见的需求。尤其是在处理动态数据时,程序员经常需要对表达式或公式进行求值。在这方面,CSharpScript.EvaluateAsyncDataTable.Compute是两个常用的工具。本文将对它们进行比较,分析其优缺点、使用场景以及性能表现。

这两个,我在实际业务最多的还是后者,这个简单,一般公式都支持。

CSharpScript.EvaluateAsync

概述

CSharpScript.EvaluateAsync 是 C# 6.0 引入的 Microsoft.CodeAnalysis.CSharp.Scripting 命名空间中的一部分。它允许用户动态地编写和执行C#代码。利用这个功能,开发者可以在运行时定义和执行复杂的表达式。

使用场景

  • 动态计算:用户可以根据输入动态生成代码。
  • 复杂逻辑:可以实现复杂的计算逻辑,支持C#的所有特性。
  • 安全性:可以通过提供特定的上下文和限制来控制代码的执行。

示例代码

编辑
2025-09-18
C#
00

软件开发是一门复杂的技艺,常常被比作建筑施工。正如建筑师和工程师遵循原则以确保建筑物的坚固和可维护性,软件工程师也遵循原则来创建健壮、可扩展和可维护的代码。在软件开发社区中,一套被广泛认可的原则是 SOLID,这一缩写是由 Robert C. Martin 提出的。本文将探讨 SOLID 原则,并展示如何在 C# 中应用这些原则。

image.png

S. 单一职责原则 (SRP)

单一职责原则规定一个类应该仅有一个改变的理由,换句话说,一个类应该只承担一种职责。这一原则促进了高内聚和低耦合,使得类更易于理解、维护和测试。

编辑
2025-09-18
C#
00

引言

在面向对象编程领域中,不变性的概念在并发和数据完整性至关重要的环境中扮演着关键角色。一旦创建,不可变对象不允许其状态被更改,因此提供了诸如增强的线程安全性和减少调试复杂性等多个优点。本文深入探讨了在C#中创建不可变对象的方法,并通过实际例子讨论了它们的利弊。

在C#中创建不可变对象

使用只读属性

在C#中强制实施不变性的一种有效方式是使用只读属性。这些属性必须在对象创建时设置,并且之后不能修改。这种方法不仅确保了数据完整性,还简化了对象模型。

编辑
2025-09-18
C#
00

清晰代码是软件开发中的一个基本概念,强调编写易于理解、维护和更新的代码的重要性。在 C# 编程的背景下,遵循清晰代码原则不仅增强了代码的可读性,还确保了其可靠性和可维护性。本文深入探讨了几个编写 C# 清晰代码的关键技巧和实践,这些技巧和实践可以显著提高您的软件项目的效率和质量。

理解清晰代码

清晰代码的特点包括几个方面:易于阅读、简单易懂和直接修改。清晰代码的主要目标是使开发者从创建阶段到维护阶段的生活更加轻松。它涉及以这样一种方式编写代码,即新加入项目的人或原作者在很长一段时间后都能快速理解。

C# 编写清晰代码的技巧

技巧 1:有效的命名约定

代码中的命名在提高其可读性和可维护性方面起着至关重要的作用。以下是 C# 中变量、方法和类命名的一些指导原则:

  • 避免名称过短或过长:名称应简洁且足够描述性,以传达其用途。
  • 具有意义:选择能够清楚描述变量或方法用途或意图的名称。
  • 揭示意图:名称应告诉代码的读者该函数的功能,而无需深入了解其复杂性。
  • 反映问题域:使用问题域中的术语,使代码对利益相关者更加易懂。

错误的示例:

C#
int d; // 不清楚变量代表什么 void p() {} // 方法名不表明功能

正确的示例:

C#
int daysSinceCreation; // 清晰地表明变量的用途 void ProcessUserInput() {} // 方法名清晰表明其功能

技巧 2:命名约定标准

C# 开发者通常使用 PascalCase 和 camelCase 约定:

  • PascalCase:用于命名类、方法和属性(例如,CarModel, StartEngine)。
  • camelCase:用于局部变量和方法参数(例如,speed, localVariable)。

注意:我个人系统,变量一般camelCase,类,方法一般PascalCase,这个全看个人习惯。

技巧 3:方法签名

方法签名包括方法名称、其参数和返回类型,应设计得尽可能信息丰富且清晰。例如,一个名为 StartEngine 的方法,没有参数且返回类型为 void,清楚地表明它执行一个动作而不返回任何值。

错误的示例:

C#
void DoThing(int x, int y, bool z) {} // 参数名不清晰,方法名模糊

正确的示例:

C#
void StartEngine() {} // 清晰地表明方法的行为,没有参数,返回类型为 void

技巧 4:方法参数最佳实践

  • 限制参数数量:尽量使用不超过三个参数的方法,以避免复杂性并增强可读性。

错误的示例:

C#
void CreateReport(string title, string data, bool summary, bool includeImages, string format) {}

正确的示例:

C#
void CreateReport(ReportOptions options) {} // 其中 ReportOptions 是一个类,包含所有必要的属性

技巧 5:处理输出参数

  • 避免输出参数:考虑返回一个对象或元组,而不是使用输出参数,以使方法的目的和行为更加清晰,我个人更推荐对象,元组是比较省事,但可读性也不太好。

技巧 6:变量的范围

  • 限制变量范围:在方法中尽可能靠近使用点声明变量,以避免意外的副作用并增强代码清晰度。

技巧 7:避免魔法数字

  • 使用命名常量:用命名常量替换魔法数字,以提高代码的可读性和可维护性,这里说白了不要在逻辑中直接使用值,而是用变量或常量来替换。
编辑
2025-09-18
C#
00

在开发应用程序时,有时我们需要在WinForms应用程序中预览PDF文件。本文将详细介绍如何实现这一功能。我们将使用一些开源或第三方库来简化这一过程。

环境准备

在开始之前,请确保你已经安装了以下工具和库:

  • Visual Studio(或其他C#开发工具)
  • .NET Framework 或 .NET Core
  • PdfiumViewer

安装 PdfiumViewer

PdfiumViewer 提供了一个方便的方法在WinForms应用程序中展示PDF文件。你可以通过以下命令安装这个库:

PowerShell
Install-Package PdfiumViewer.Core

或者在 Visual Studio 的NuGet包管理器中搜索PdfiumViewer并安装。