找到 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 = minorAxis;    }    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.