c#
问·道
C# , WPF
展开
-
CLR如何管理工作者线程
工作者线程:任何线程,而不仅仅指的是主线程。工作项在全局队列。工作项以FIFO算法被工作者线程取出。TaskScheduler调度Task对象:非工作者线程:调度Task时,该Task被添加到全局队列。工作者线程:调度Task时,该Task被添加到本地队列。工作者线程处理工作项:先在本地队列查找Task,找到Task并移除Task来处理工作项。Task以LIFO算法被工作...原创 2019-12-05 14:20:37 · 179 阅读 · 0 评论 -
.NET面试题解析(02)-拆箱与装箱
常见面试题目:1.什么是拆箱和装箱?2.什么是箱子?3.箱子放在哪里?4.装箱和拆箱有什么性能影响?5.如何避免隐身装箱?6.箱子的基本结构?7.装箱的过程?8.拆箱的过程?9.下面这段代码输出什么?共发生多少次装箱?多少次拆箱?int i = 5;object obj = i;IFormattable ftt = i;Console.Write...原创 2019-11-30 11:13:24 · 197 阅读 · 0 评论 -
.NET面试题解析(01)-值类型与引用类型
常见面试题目:1. 值类型和引用类型的区别?2. 结构和类的区别?3. delegate是引用类型还是值类型?enum、int[]和string呢?4. 堆和栈的区别?5. 什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?6.“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?7. 理解参数按值传递?以及按引用传递?8. out 和 re...原创 2019-11-30 11:11:04 · 161 阅读 · 0 评论 -
vs2017自带的诊断工具(Diagnostic Tools)诊断程序的内存问题详解
前言一般来说.NET程序员是不用担心内存分配释放问题的,因为有垃圾收集器(GC)会自动帮你处理。但是GC只能收集那些不再使用的内存(根据对象是否被其它活动的对象所引用)来确定。所以如果代码编写不当的话,仍然会出现内存泄漏的问题,常见的情况有:一个静态变量引用了一个应该被释放的对象,事件注册后不解除注册,非托管资源使用后没有手动释放。不断的内存泄漏终会引起内存不足,挂掉你的程序。对于这种内存...原创 2019-11-26 16:45:11 · 2077 阅读 · 1 评论 -
.NET内存泄漏
1. 内存泄漏很常见的现象是分不清哪些对象需要释放,对于控件、Stream等一些非托管资源也只管新增,却没有释放,功能是实现了,却埋了颗不小的雷。private void button1_Click(object sender, EventArgs e){ for(int i=0;i<1000;i++) this.Controls.Add(new TabP...原创 2019-11-26 12:34:32 · 239 阅读 · 0 评论 -
测试LINQ查询中的ToList()方法性能
1.测试使用ToList():private static void TestToListPerformance() { Stopwatch sw = new Stopwatch(); List<int> arrList = new List<int>(); for (var i ...原创 2019-07-17 17:56:50 · 4340 阅读 · 0 评论 -
ListBox隔行显示Items背景颜色
AlternationCount="2" 属性 <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Style.Triggers>...原创 2019-08-24 16:37:52 · 821 阅读 · 0 评论 -
C# 设置Excel单元格格式(身份证文本显示)
1、全表自动列宽 mysheet.Cells.Select(); mysheet.Cells.Columns.AutoFit();2、合并 excelRangeParm.Merge(Missing.Value); 3、粗体设置 excelRangeParm.Font.Bold = true; 4、字体大小设置 exc...原创 2019-08-22 08:53:21 · 1778 阅读 · 0 评论 -
C# 判断(Excel)文件是否已经打开
using System.IO;using System.Runtime.InteropServices;[DllImport("kernel32.dll")]public static extern IntPtr _lopen(string lpPathName, int iReadWrite);[DllImport("kernel32.dll")]public static ...原创 2019-08-22 09:29:28 · 3280 阅读 · 1 评论 -
LINQ查询语句案例学生表、成绩表、课程表
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace LINQ3{ class Student { /// <summary> ///学生...原创 2019-07-12 16:08:42 · 1071 阅读 · 0 评论 -
扩展一个double的方法,实现两个值相减小于0.0001,算相等。
公司领导除了这样一个题,第一遍,我意思都没读懂,后来理解了,需要写一个扩展方法。这在C#中也是很重要的一个知识点。至于为什么两个数为什么相减等于0不就可以了?这是因为这两个数据是double类型,精度是不同的。如果是两个已经复制的double变量,那么你可以通过a==b来判断两个数是否相等。可如果你是通过计算得到的两个double数据,有可能即使相等,也会认为这两个double数据...原创 2019-07-15 17:27:18 · 716 阅读 · 0 评论 -
C#中的委托是什么
1.什么是委托?(方法作另一个方法的参数)delegate void MyDel(int value); //声明委托类型和类一样,委托是用户自定义的类型,但是类是数据和方法的集合,而委托是持有一个或多个方法。delegate可以看做是一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。委托保存的方法可以来自任何类或结构调用列表中的方法可以是实例方法也可以是静态方法调用...原创 2019-07-03 17:54:05 · 7268 阅读 · 0 评论 -
C#值类型和引用类型的区别
值类型:byte short int long float double decimal char bool struct enem1.数据存储在栈中,内存自动释放2.存取速度快3.变量存放实际数据引用类型:string class 数组 接口 委托1.数据存储在堆中,内存由GC释放2.存取速度慢3.变量存放的是数据地址,即对象的引用...原创 2019-07-04 16:14:49 · 830 阅读 · 0 评论 -
C#命名规则和设计规则
Pascal将每个单词的第一个字符大写、遇到两个字母的首字母缩略词时,两个字母都要大写命名空间:使用公司名作为前缀、在第二级名称中使用稳定的与版本无关的产品名称类型:名词或名词短语命名结构:名词或名词短语命名接口:形容词短语或偶尔用名词或名词短语命名接口,在接口名称前加上字母I作为前缀方法:谓词或谓词短语属性:名词短语或形容词事件:谓词或谓词短语来命名事件,现在时态和过去时态让事件...原创 2019-07-04 17:54:12 · 1319 阅读 · 0 评论