微软 c#
dark_tone
编程自学者,喜爱专研未知。
智商不够
展开
-
c#基础--类声明与继承中的访问总结
公有和静态当类声明的时候,自身的字段,方法无论是私有的,还是公开的,又或者是静态的,类自身都可以直接用(无需new): class Test { private int a; public string str; private void AA(){ } public void CC() { } ...原创 2019-12-13 17:26:31 · 169 阅读 · 0 评论 -
c# 利用Sort方法对FileInfo[] 进行时间或名字排序
GetFiles()方法的返回值FileInfo[]并不保证顺序是正确的。我最近写代码遇到如下情况:如图所示的文件。using System;using System.IO;using ExcelDataReader;using System.Linq;using System.Data;using System.Collections.Generic;namespace 读...原创 2019-11-15 14:11:25 · 3292 阅读 · 0 评论 -
c# 利用ExcelDataReader 读取excel文件。
项目地址它分为两个部分,一个是ExcelDataReader base package ,ExcelDataReader.DataSet extension package。前者支持“底层”的 读取接口,优点是充分可控制。后者更方便,通过AsDataSet()方法,它能把数据直接转换成Dataset。安装的话,二者选一即可,如果仅安装后者,事实上也附带了前者。功能:①可以读取xlsx...原创 2019-10-29 06:20:50 · 10766 阅读 · 1 评论 -
c# 利用分组思想对list中的重复元素进行统计
想统计一个列表中,重复元素的个数。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 统计元素重复出现次数{ class Program { static voi...原创 2019-10-28 06:22:46 · 2690 阅读 · 0 评论 -
c# 对特定Equals和Equals(object obj)的疑惑与总结!
自己尝试写出如下代码,来判断对象相等,虽然能正常工作using System;namespace 比较相等{ class Program { static void Main(string[] args) { Pet a1 = new Pet { Name = "Turbo", Age = ...原创 2019-10-27 19:57:51 · 351 阅读 · 0 评论 -
c# 再研究下相等性,==,equals,IEquatable<T>,SequenceEqual,IEqualityComparer<T>
说实话,我看了一些资料,也看了一些msdn,还是有点模糊。这里把一些思考记录下来。老生常谈,c#分为值类型和引用类型。==是对equals的重载,对于值类型,比较的是值内容,对于引用类型,比较的是地址。using System;using System.Collections;using System.Collections.Generic;using System.Linq;us...原创 2019-10-26 06:42:23 · 1196 阅读 · 0 评论 -
c#基础练习--12 利用面向对象思想进行进程(文件)打开
using System;using System.Diagnostics;namespace _01学习process{ class Program { static void Main(string[] args) { Console.WriteLine("请输入要打开文件的完整路径:"); ...原创 2019-10-25 06:55:58 · 128 阅读 · 0 评论 -
c#基础练习--11 多态之接口
接口定义接口表示一种规范,一种能力。语法: public interface ICanRunable { void Run(); }接口中的方法不允许有访问修饰符,默认即为public。方法不允许有方法体。接口中可以有方法,有自动属性,有索引器,因为它们本质上全是方法。using System;namespace 接口{ c...原创 2019-10-25 02:01:03 · 148 阅读 · 0 评论 -
c# 基础练习--10 多态之抽象类
抽象类当父类属于概念上的存在,逻辑上无法创建实例,可以考虑把父类作为抽象类,也称为抽象基类。一个抽象类的方法,可以是抽象方法,也可以是非抽象方法。关键字abstract抽象方法如果父类中的方法不知道如何实现时,或者父类的方法根本不重要,不使用时,可以把父类的方法作为抽象方法。有了抽象方法,类只能是抽象类,普通类是不能有抽象方法。抽象方法不能加函数体定义{}。using System...原创 2019-10-24 08:22:17 · 280 阅读 · 0 评论 -
c# 基础练习--09 多态之虚方法
多态即一个对象实现多种状态。实现多态的手段:虚方法当子类赋值给父类后,如果不用里氏转换,调用的是父类方法。using System;namespace 继承{ class Program { static void Main(string[] args) { //子类可赋值给父类 Pers...原创 2019-10-24 07:24:32 · 343 阅读 · 0 评论 -
c# 基础练习--08 装箱和拆箱,字典简单用法
装箱:就是将值类型转换为引用类型。拆箱:就是将引用类型转换为值类型。一个容易误解的地方str ="123";int num=int.parse(str);以上代码也进行了类型转换,把字符串转换为整数,但是并没有进行装箱和拆箱操作。因为要发生装箱和拆箱操作,需要有一个大前提,两个类型之间必须有继承关系,int和str之间显然并非继承,因此并没有装拆箱。这也是ArrayList和Has...原创 2019-10-24 06:11:37 · 232 阅读 · 0 评论 -
c#基础练习--07 里氏转换 is,as关键字
规则:① 语法上子类可以赋值给父类,其意义在于如果有一个地方需要父类作为参数,我们可以使用一个子类替代。②如果父类中装的是子类对象,那么可以将这个父类强制转换为子类对象。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tas...原创 2019-10-23 19:49:23 · 188 阅读 · 0 评论 -
c#基础练习--06继承
继承的特性:①单根性: 一个子类只能有一个父类。②传递性: 子类不光能调用它的父类,还能调用它父类的父类。子类会继承父类的公有属性与方法,并不会继承父类的构造函数,但是,子类在创建时会默认先调用父类的无参构造函数,再调用子类自己的构造函数,这是因为需要在子类的内部创建父类,以便让子类可以使用父类中的成员。所以如果在父类中重新写了一个有参构造函数,子类会报错,解决方法:①必须补齐一个无参构造...原创 2019-10-23 18:19:02 · 400 阅读 · 0 评论 -
c#基础练习--05 静态类和非静态类,字符串不可变性
从语法结构上看,静态类和非静态类的差别在于:①静态类只能拥有静态成员。②非静态类可以有静态成员,也可以有非静态成员。从含义上看,静态类和非静态类的差别在于①静态类强调这个类是一种“工具类”,减少了代码的复杂度。②因为静态类不能创建实列,因此它在整个项目中,可以模仿为“全局类,公用类”,做到资源共享。③非静态类(仅有非静态成员)是不占内存的,只有实例才占内存,同时会被GC回收;但静态类始...原创 2019-10-23 12:32:33 · 179 阅读 · 0 评论 -
c#基础练习--04 参数中的可变参数params
params将实参列表中跟可变参数数组类型一致的元素都当作数组的元素去处理。传统写法:using System;using System.Linq;namespace ref和out{ class Program { static void Main(string[] args) { int[] score = ...原创 2019-10-21 06:37:43 · 117 阅读 · 0 评论 -
c#基础练习--03 参数中的 ref out
从程序结构上来说,ref和out是把return的工作给抢了。using System;namespace ref和out{ class Program { static void Main(string[] args) { int m = 10; int n = 15; i...原创 2019-10-21 06:14:49 · 160 阅读 · 0 评论 -
c#基础练习--02 数组中的takewhile,skipwhile
using System;using System.Linq;namespace 数组{ class Program { static void Main(string[] args) { //数组的简易初始化方法,节省了写new int[] int[] num = { 10,0,9,7,1, ...原创 2019-10-18 02:04:47 · 2118 阅读 · 0 评论 -
c#基础练习--01 数组的简易初始化,排序,分组
using System;using System.Linq;namespace 数组{ class Program { static void Main(string[] args) { //数组的简易初始化方法,节省了写new int[] int[] num = { 1, 2, 3, 4, ...原创 2019-10-17 19:56:23 · 334 阅读 · 0 评论 -
个人实践在 c# vs2017中嵌入资源于控制台程序
资源这个东西在.net平台中包含很广,比如字符串啊,图标啊,各类文件(包括文本文件,二进制文件,图片文件等等),统称为资源。以前传统的方式,是把exe程序与需要的文件放在一起,利用file open等方式打开,读取。这种传统方法有一个小缺点,数据文件容易被损害、丢失或者被篡改。而且大量的文件也不方便移动、分发。有没有一种办法,能把所需要的文件和exe打包成一个集合?微软在.net平台就给...原创 2019-09-02 09:29:11 · 810 阅读 · 0 评论 -
Serilog中的结构化数据(二)
serilog默认的方式是使用json来存储数据。但有个前提,对于基本,纯粹的类型,serilog能够自动识别。var count = 456;Log.Information("Retrieved {Count} records", count);其表现形式是{ “Count”: 456 }Booleans - boolNumerics - byte, short, ushort, ...原创 2019-09-26 19:53:34 · 836 阅读 · 0 评论 -
Serilog 中的开始(一)
安装核心库是 Serilog,配合其他库组合使用。核心库支持 .NET 4.5+, Windows (8/WinRT/Universal+) and Windows Phone 8+.PM> Install-Package SerilogPM> Install-Package Serilog.Sinks.Console使用using Serilog;var log =...原创 2019-09-26 23:47:34 · 1743 阅读 · 0 评论 -
c#中字符串比较,==,!=,Compare,Equals的区别
我在比较字符串时,都是使用 == 和 != 运算符,但今天发现c#关于字符串比较功能很多。除了以上的,还有Compare,Equals。有什么区别?首先说== 和 !=,它比较的是字符串的值。本质上是对Equals方法一部分的重载,微软封装好的,在内部他已经对 = = 操作符进行了重写。string a="abc";string b="abcd"为什么说是对Equals方法一部分...原创 2019-10-01 02:16:13 · 13174 阅读 · 0 评论 -
c#中字符串的groupby,统计元素
利用groupby,可以不需要像c语言一样,不停写循环在内部进行判断。通过分组方式,既能够统计重复元素,也算另类意义上的“元素切片”。另外似乎可以通过正则表达式来完成相同工作,不过暂时还没学正则。自己摸索了一段时间,比如我想统计 字符串 ss = “abctoaaabqty”,字符‘a’出现了多少次?字符串分组using System;using System.Collections....原创 2019-10-01 06:05:04 · 1198 阅读 · 0 评论 -
Serilog是 .NET 中最著名的结构化日志类库
在过去的几年中,结构化日志已经大受欢迎。而Serilog是 .NET 中最著名的结构化日志类库 ,我们提供了这份的精简指南来帮助你快速了解并运用它。内容设定目标认识Serilog事件和级别触发和收集结构化数据为过滤和关联添加事件标记大海捞针 [Finding needles in the haystack]下一步是什么?获得帮助设定目标你可能之前已经在项目中使用了Seril...转载 2019-09-26 17:46:14 · 14655 阅读 · 1 评论 -
c# list 删除,查找对象元素的方法
总体上可分为三大类:利用list自带的方法进行删查操作这里面又可以细分,一类是以对象为操作,一类是以索引为操作,还有一类是以委托为操作。比如find 查找系列,find、findindex、findall、findlast等等,是以委托为操作,返回值分别是对象,索引。// Create a list of parts. List<Part> parts = ne...原创 2019-09-26 02:03:51 · 4779 阅读 · 0 评论 -
Ado.net,linq to sql,EF等知识记录,避免混淆(一)
个人觉得微软的体系有个缺点,太庞杂了。随着新技术不断涌现,与老旧技术互相牵连,光理清楚它们之间的关系就有点费神。前面理了一段时间wcf,web api,core web api 的区别,头疼。现在开始理数据相关,包括Ado.net,linq to sql,linq to EF,entity framework 等等区别。ADO.NET定义:为支持同数据库系统进行交互,.net平台定义了许多...原创 2019-09-07 08:35:34 · 629 阅读 · 0 评论 -
个人实践第一个.net core web api程序
没有学过以前的asp.net ,直接学core新框架,查了不少资料,有点心得,记录下来core web api 跟以前老框架的比较起来还是有不少改变的。整个套路就是创建M(模型)、C(控制器)。模型用来申明要用的数据。控制器用来处理具体的操作,自定义各种需要的请求方法,读写数据库,主要代码就是在控制器类里完成。路由有两种方式: Convention-based (按约定), attrib...原创 2019-09-06 05:06:53 · 275 阅读 · 0 评论 -
学习wcf之后的web api,认识它们的区别。
刚学的时候,被微软.net的wcf和web api给弄糊涂了,查询了不少资料,大概搞清楚了它们的区别。wcf出现的时间比较早,用来统一之前的各种通信技术,也就是所谓的分布式架构。主要是为了实现传统的c/s架构。后来还出现了wcf rest 进化版本,也能做b/s架构wcf的优点:支持各种协议,包括不限于http,tcp,udp,命名管道,消息队列,自定义协议等等,支持各种服务器端和客户端,...原创 2019-09-06 02:15:47 · 736 阅读 · 0 评论 -
c# 基础知识、容易弄混淆的细节记录(二)
通常一个整数默认存储的是整数型int,即32位,如果想特殊指明,要显示指定。 比如 uint i =1234U ; long i=1234L; ulong i = 1234UL;否则编译器会默认1234属于int。通常一个小数默认存储的是浮点型double,即64位双精度,如果想特殊指明,要显示指定。 比如 folat f =1234.567F; float型是32位。c# 7...原创 2019-09-05 19:59:40 · 114 阅读 · 0 评论 -
学习wcf笔记,个人实践用vs2017构建第一个简单的wcf程序
wcf能完成分布式应用程序。构建方式可以通过标准类库或者wcf项目模板。整个wcf一般会创建3个程序集① wcf服务程序集: *dll文件,包含了希望向外部用户公开的整体功能的类和接口。②wcf 服务宿主: HOST模块,承载了wcf服务程序集的实体。③wcf 客户端: 通过中间代理访问服务功能的应用程序。首先学习通过最麻烦最细节的方式来做。第一步:新创建一个class lib,修...原创 2019-09-03 07:03:13 · 384 阅读 · 0 评论 -
c#调用外部exe的方法有简单,有复杂的。
最简单的就是直接利用process类using System.Diagnostics;Process.Start(" demo.exe");想要详细设置的话,就 public static void RunExeByProcess(string exePath, string argument) { //创建进程 System.Diagnostics.Process p...原创 2019-09-02 06:58:33 · 4257 阅读 · 1 评论 -
初学c# 类,枚举和结构体的一些小细节。
public class Program { static void Main() { //同一名称空间中枚举,无需加public也能直接访问。 //同一名称空间中的举或者结构成员,需加public才能访问 A.print(); // 枚举不需要new,直接赋...原创 2019-08-31 17:54:40 · 156 阅读 · 0 评论 -
c# 中string挺特殊,在按值传递的时候,没有表现出引用类型的特色
static void Main() { string a = "test is a "; test(a); Console.WriteLine("call after : {0} ",a); Console.ReadKey(); }...原创 2019-08-30 23:53:15 · 144 阅读 · 0 评论 -
初学 网络抓包,完善c# 爬虫程序。
前面弄了一个简单的c#爬虫,但是有些数据在web上看不到,仅仅属于桌面应用程序或者手机端app。查询资料学习网络抓包,看能不能从应用程序中解析出需要的数据。利用fiddler工具能够抓包的条件,第三方应用程序使用:IE Chrome等浏览器程序使用WinInet库进行HTTP/HTTPS通信程序内嵌Webbrowser如果程序没有使用Windows提供的WinInet库进行HTTP...原创 2019-08-30 23:42:22 · 456 阅读 · 0 评论 -
c# 初学写爬虫程序遇到的坑
最初用python写爬虫,很方便快捷,但缺点是编译出来的exe过大,又使用了pygame做界面,最后的程序代码差不多200M.于是准备换一种语言,初学c#尝试写爬虫。难度比起python不可同日而语,最关键的是网上的资料较少,而且挺过时。全靠自己磕磕碰碰摸索着,整个改写花费了12个小时,终于成功完成。代码量比起python大约提高了100%。python是110行,c#用了210行完成同样...原创 2019-08-25 00:31:57 · 554 阅读 · 0 评论 -
Ado.net知识记录,个人摸索使用vs2017自带数据库LocalDB(二)
本来打算安装一个数据库用来学习,后来查询资料发现vs2017已经自带了数据库,囧。行吧,懒人发现自己更高兴了。vs2017自带的数据库叫做SQL Server Express LocalDB。属于express 系列中的本地运行版本,与应用程序一起在进程中运行,而不是作为服务运行。微软的SQL Server系列>SQL Server Express系列> Server Expre...原创 2019-09-07 11:47:01 · 1027 阅读 · 2 评论 -
entity framework 的知识记录
与数据库的通信模型。原创 2019-09-08 04:47:13 · 97 阅读 · 0 评论 -
c# 控制台程序怎么实现每天指定时刻定时
通常用的timer都是每隔一段时间,如果想指定时刻定时,大约有3类方法:轮询制度思路是仍然设定timer,比如1分钟,每次启动定时任务后,再去判断有没有到指定时间。 static void Main(string[] args) { System.Timers.Timer timer = new System.Timers.Timer(); ...原创 2019-09-25 23:22:02 · 5465 阅读 · 0 评论 -
c#中的list 数据去重,并在wpf中listbox控件文本对齐
开发的股票程序遇到两个问题:股票数据重复。listbox控件文件不能对齐。网上查询了一些资料,对listbox对齐的方法还是没搞明白。不过今天无意中进行数据去重的时候,listbox对齐了,原理没搞懂。。先记录下来。可能是在准备数据阶段填充了空格,又重写了tostring()方法,然后listbox会自动对齐?? List<IndusIndex> temp = new...原创 2019-09-24 21:01:04 · 838 阅读 · 0 评论 -
vs2017 中项目的publish,即“发布”到底是什么?
比如用c#编写了一个控制台程序,鼠标右键就会显示出发布,这和传统的release有什么区别?查了不少资料,个人理解windows程序提供给别人使用,主要是3种方法:最传统的把exe文件及文件夹提供给用户,这种方法最简单,缺点是容易出现:“缺少xx.dll”,一种解决方法是采用静态链接,把静态lib和exe一起打包。当然现在的win10系统因为集成了.net frameware框架,这种缺...原创 2019-09-21 18:41:06 · 6670 阅读 · 1 评论