找到 34423 篇文章 关于编程

什么是接口隔离原则以及如何在 C# 中实现它?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:16:41

320 次浏览

客户端不应该被迫依赖它们不使用的接口。接口隔离原则指出客户端不应该被迫实现它们不使用的接口。与其使用一个臃肿的接口,不如根据方法组创建多个小的接口,每个接口服务于一个子模块接口隔离原则示例public interface IProduct {    int ID { get; set; }    double Weight { get; set; }    int Stock { get; set; }    int Inseam { get; set; }    int WaistSize { get; set; } } public class Jeans : IProduct {    public int ID { ... 阅读更多

什么是外观模式以及如何在 C# 中实现?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:14:49

124 次浏览

外观模式是在更复杂的结构之上构建的一个简单结构。参与者子系统是任何实现功能的类或对象,但可以通过外观模式“包装”或“覆盖”以简化接口。外观模式是子系统之上的抽象层,并知道将适当的工作委托给哪个子系统。外观模式非常通用,适用于几乎所有主要的应用程序,尤其是在我无法出于各种原因重构或修改应用程序部分的应用程序中。示例public class HomeFacade {    LightsFacade light;    MusicSystemFacade musicSystem;    AcFacade ac;    public HomeFacade() {     ... 阅读更多

什么是里氏替换原则以及如何在 C# 中实现?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:12:32

266 次浏览

派生类型必须完全可替换为其基类型。定义:我们应该能够将子类视为父类。从本质上讲,这意味着所有派生类都应保留其父类的功能,并且不能替换父类提供的任何功能。在里氏替换原则之前public class Ellipse {    public double MajorAxis { get; set; }    public double MinorAxis { get; set; }    public virtual void SetMajorAxis(double majorAxis){       this.MajorAxis = majorAxis;    }    public virtual void SetMinorAxis(double minorAxis){       this.MajorAxis = majorAxis;    }    public ... 阅读更多

为什么单例类在 C# 中总是密封的?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:08:03

1K+ 次浏览

sealed 关键字表示该类不能被继承。将构造函数声明为私有意味着无法创建该类的实例。您可以有一个具有私有构造函数的基类,但仍然可以从该基类继承,定义一些公共构造函数,并有效地实例化该基类。构造函数不会被继承(因此派生类不会仅仅因为基类具有所有私有构造函数而具有所有私有构造函数),并且派生类始终首先调用基类构造函数。将类标记为 sealed 可以防止其他人轻易绕过您精心构建的单例类,因为它阻止了其他人从该类继承。示例static ... 阅读更多

如何在 C# 中获取目录内所有文件、子文件及其大小?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:05:22

1K+ 次浏览

要获取文件,C# 提供了一个方法 Directory.GetFilesDirectory.GetFiles 返回与指定搜索模式匹配的所有文件(包括其路径)的名称,并可以选择搜索子目录。在下面的示例中,* 匹配该位置的零个或多个字符。SearchOption TopDirectoryOnly。仅搜索顶级目录SearchOption AllDirectories 。搜索所有顶级目录和子目录FileInfo 获取文件信息,如 Length、name示例 1static void Main (string[] args) {    string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";    var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);    foreach (string file in files) {       Console.WriteLine(file);    }    Console.ReadLine (); }输出C:\Users\Koushik\Desktop\TestFolder\TestFolderMain\TestFolderMain.txt ... 阅读更多

如何在 C# 中实现 IDisposable 设计模式?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:03:45

2K+ 次浏览

当我们需要处理非托管对象时,应该使用 IDisposable 设计模式(或 Dispose 模式)。为了实现 IDisposable 设计模式,直接或间接处理非托管对象的类应该实现 IDisposable 接口。并实现 IDisposable 接口中声明的 Dispose 方法。我们不直接处理非托管对象。但我们处理托管类,这些类直接处理非托管对象。例如,文件句柄、连接字符串、HTTP 流等。此模式的重要方面是它使继承类更容易遵循 IDisposable 设计模式。这是因为... 阅读更多

如何在 C# 中实现空对象模式?

Nizamuddin Siddiqui
更新于 2020年11月25日 12:00:25

126 次浏览

空对象模式帮助我们编写干净的代码,避免在任何可能的地方进行空检查。使用空对象模式,调用者不必关心它们是否有空对象或真实对象。并非在所有情况下都可以实现空对象模式。有时,它可能会返回空引用并执行一些空检查。示例static class Program{    static void Main(string[] args){       Console.ReadLine();    }    public static IShape GetMobileByName(string mobileName){       IShape mobile = NullShape.Instance;       switch (mobileName){         ... 阅读更多

什么是 C# 中的连接池以及如何实现?

Nizamuddin Siddiqui
更新于 2020年11月25日 11:56:02

737 次浏览

这些用于导入命名空间(或为命名空间或类型创建别名)。这些位于文件的顶部,在任何声明之前。using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button;using 语句确保即使在创建对象并调用方法、属性等时发生异常,也会调用 Dispose()。Dispose() 是 IDisposable 接口中存在的一个方法,有助于实现自定义垃圾回收。换句话说,如果我们正在执行一些数据库操作(插入、更新、删除),但不知何故发生了异常,那么此处 using 语句将关闭... 阅读更多

如何使用 C# 获取以字节为单位的可读文件大小缩写?

Nizamuddin Siddiqui
更新于 2020年11月25日 11:54:27

393 次浏览

要获取目录,C# 提供了一个方法 Directory.GetDirectoriesDirectory.GetDirectories 返回指定目录中与指定搜索模式匹配的子目录(包括其路径)的名称,并可以选择搜索子目录。要获取文件,C# 提供了一个方法 Directory.GetFilesDirectory.GetFiles 返回与指定搜索模式匹配的所有文件(包括其路径)的名称,并可以选择搜索子目录要获取文件长度,C# 提供了一个属性 Length示例static void Main(string[] args) {    string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";    var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);    foreach (string file in files) {       long size = ... 阅读更多

如何在 C# 中捕获异步 void 方法抛出的异常?

Nizamuddin Siddiqui
更新于 2020年11月25日 11:53:15

806 次浏览

在同步 C# 代码中,异常会向上传播到调用堆栈,直到到达可以处理异常的适当 catch 块。但是,异步方法中的异常处理并不那么简单。C# 中的异步方法可以有三种类型的返回值:void、Task 和 Task。当异步方法中发生异常时,该方法的返回类型为 Task 或 Task,异常对象将包装在 AggregateException 的实例中并附加到 Task 对象。如果抛出多个异常,则所有异常都将存储在 Task 对象中。示例 1static async Task Main(string[] args) ... 阅读更多

广告
© . All rights reserved.