随笔分类 -  开发 / C#

摘要:深拷贝与浅拷贝(shallow copy)的区别在于,深拷贝不仅复制对象的引用,还复制对象本身及其包含的所有子对象。 using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Ser 阅读全文
posted @ 2025-03-11 11:17 apple-hu 阅读(22) 评论(0) 推荐(0)
摘要:简介: 编程需要对基本的数据结构和算法有所了解。程序员为并发情况选择最合适的数据结 构,那就需要知道很多事情,例如算法运行时间、空间复杂度,以及大写0标记法等。在不 同的广为人知的场景中,我们总知道哪种数据结构更高效。对于并行计算,我们需要使用适当的数据结构。这些数据结构具备可伸缩性,尽可能地 避免 阅读全文
posted @ 2024-10-17 18:19 apple-hu 阅读(42) 评论(0) 推荐(0)
摘要:简介: 前面异步编程的不足:它允 许我们以模块化的方式设计程序,来组合不同的异步操作。遗憾的是: 一: 当阅读此类程序时仍然非常难理解程序的实际执行顺序。在大型程序中将会有许多相互依赖的任务和后续操作,用于运行其他后续操作的后续操作,处理异常的后续操 作,并且它们都出现在程序代码中不同的地方。因此了 阅读全文
posted @ 2024-10-16 17:58 apple-hu 阅读(172) 评论(0) 推荐(0)
摘要:简介: 线程池的优势与不足:使用线程池可以使我们在减少并行度花销时节省操作系统资源。我们可以认为线程池是一个 抽象层,其向程序员隐藏了使用线程的细节,使我们专心处理程序逻辑,而不是各种线程问题。但使用线程池也相当复杂。从线程池的工作者线程中获取结果并不容易。我们需要实现自定义方式来获取结果,而且万一 阅读全文
posted @ 2024-10-16 17:16 apple-hu 阅读(155) 评论(0) 推荐(0)
摘要:线程池的简介 为每个短暂的异步操作创建线程会产生显著的开销,线程池可以成功地适应于任何 需要大量短暂的开销大的资源的情形。我们事先分配一定的资源,将这些资源放入到资源 池。每次需要新的资源.只需从池中获取一个,而不用创建一个新的。当该资源不再被使用 时,就将其返回到池中。 ThreadPool类型拥 阅读全文
posted @ 2024-10-12 16:26 apple-hu 阅读(218) 评论(0) 推荐(0)
摘要:1. thread 不带参数 (Main和Thread都在同步处理)(注意using static 和System.Console的使用) using static System.Console; namespace Recipe1 { class Program { static void Mai 阅读全文
posted @ 2024-10-11 17:43 apple-hu 阅读(79) 评论(0) 推荐(0)
摘要:一. 127.0.0.1是回路地址,来检验本机TCP/IP协议栈,实际使用过程中服务端不在本机,是外部地址,要用IP地址测试。 外部用户采用IP+端口号访问,如下图浏览器访问不了,400错误。 解决方案: 因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许 阅读全文
posted @ 2024-10-09 15:51 apple-hu 阅读(32) 评论(0) 推荐(0)
摘要:1. 修改WebApiConfig.cs中路由路径 问题:webapi的默认路由并不需要指定action的名称(WebApi的默认路由是通过http的方法get/post/put/delete去匹配对应的action), 但默认路由模板无法满足针对一种资源一种请求方式的多种操作。 解决:打开App_ 阅读全文
posted @ 2024-10-09 15:40 apple-hu 阅读(80) 评论(0) 推荐(0)
摘要:1. 打开vs2019 ,选择创建新项目 2. 选择ASP.NET Web 应用程序(.NET Framework) 3. 配置项目信息(名称,位置,框架) 4. 选择空模板(WebAPI复选框选中) 5. 这样里面就没有MVC的三层,因为前后端分离,webapi中只有两层。 6. 空的WebApi 阅读全文
posted @ 2024-10-09 14:32 apple-hu 阅读(139) 评论(0) 推荐(0)
摘要:1. 定义返回对象 // Result 对象是一种显式表示成功结果或失败的类型 // 方法可以返回这个类 ,而不是引发异常。如果操作失败,则 Result 对象将包含错误消息或代码,但不包含异常 public class Result<T> { public T Value { get; } pub 阅读全文
posted @ 2024-08-30 14:51 apple-hu 阅读(669) 评论(0) 推荐(0)
摘要:1. Task,它代表了一个异步操作的执行和完成。可以用来封装一个异步操作,使其可以在不阻塞主线程的情况下执行,并在操作完成后获取结果。 1 static void Main(string[] args) 2 { 3 MyFun(); 4 Console.Read(); 5 } 6 static v 阅读全文
posted @ 2024-08-28 11:15 apple-hu 阅读(1419) 评论(0) 推荐(0)
摘要:在C#编程中,类型参数约束用于在声明泛型类、方法、委托或接口时,对类型参数做出限制,确保客户端代码传递给泛型类型的类型参数满足特定条件。类型参数约束让编译器知道类型参数必须具备什么样的功能,这样编译器就可以安全地在泛型代码内部调用那些依赖于特定条件的方法或属性。 以下是C#中支持的主要类型参数约束: 阅读全文
posted @ 2024-08-07 16:46 apple-hu 阅读(124) 评论(0) 推荐(0)
摘要:public dynamic GetValuesAsDynamic() { return new { Number = 10, Text = "Hello" }; } // 使用方法 dynamic dynamicResult = GetValuesAsDynamic(); Console.Writ 阅读全文
posted @ 2024-08-07 16:44 apple-hu 阅读(14) 评论(0) 推荐(0)
摘要:1.访问修饰符:public:访问不受限制。private:访问仅限于当前类。protected:访问限于当前类和派生类。internal:访问限于当前程序集。protected internal:访问限于当前程序集或派生类。 2.类型声明:class:声明一个类。struct:声明一个值类型结构。 阅读全文
posted @ 2024-08-07 16:36 apple-hu 阅读(561) 评论(0) 推荐(0)
摘要:语法糖:是 C# 编程语言中为了简化代码和提高代码可读性而引入的一系列语言特性。这些特性在编译时会被转换成更基本的代码形式,但在编写代码时提供了更加简洁和直观的方式。 1.表达式体属性:使用 => 运算符定义属性的 getter 或 setter。 public string FullName => 阅读全文
posted @ 2024-08-07 16:32 apple-hu 阅读(662) 评论(1) 推荐(2)
摘要:在C#中,常用的集合主要在:System.Collections和System.Collections.Generic命名空间中。 一.System.Collections.Generic List<T> 可以动态调整大小的数组,提供添加、插入、删除、搜索等方法的集合。 LinkedList<T> 阅读全文
posted @ 2024-08-07 16:11 apple-hu 阅读(170) 评论(0) 推荐(0)
摘要:说明: 在Parallel类中提供了三个静态方法作为结构化并行的基本形式: Parallel.Invoke方法:并行执行一组委托。 Parallel.For方法:执行与C# for循环等价的并行方法。 Parallel.ForEach方法:执行与C#foreach循环等价的并行方法。 这三个方法都会 阅读全文
posted @ 2024-07-24 17:52 apple-hu 阅读(1078) 评论(0) 推荐(0)
摘要://第1种:Thread类 。使用场景:快速启动执行简单任务。 //优点:简单易用。提供了直接控制线程的方法,如Start、Suspend、Resume、Abort等。 //缺点:功能较少,不适合复杂的线程管理;直接管理线程可能导致资源利用率不高或死锁等问题。 Thread thread = new 阅读全文
posted @ 2024-07-23 16:08 apple-hu 阅读(307) 评论(0) 推荐(0)
摘要:1. 理解:表达式目录树:语法树,或者说是一种可以被我们解析的数据结构,来源using System.Linq.Expressions; 2. 与Func比较,得到的结果一样 { Func<int, int, int> func = (m, n) => m * n + 2;// new Func<i 阅读全文
posted @ 2024-06-14 16:57 apple-hu 阅读(16) 评论(0) 推荐(0)
摘要:1. Action: 0到16个参数的 没有返回值的泛型委托 Action action1 = () => { }; Action<int> action2 = i => Console.WriteLine(i); 2. 用Action类型做参数: this.DoNothing(action1); 阅读全文
posted @ 2024-06-10 11:48 apple-hu 阅读(32) 评论(0) 推荐(0)