
c#
嘿克不黑
因为热爱,成就梦想。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c#实现单例模式
public sealed class Singleton{ Singleton() { } public static Singleton Instance { get { retunr Nested.instance; } } class Nested { static Nested() { } ..原创 2020-10-18 20:00:52 · 385 阅读 · 0 评论 -
C# using System.Windows.Media.Imaging;该引用哪个dll
在网上看到BitmapSource和WriteableBitmap一些类听说是用using System.Windows.Media.Imaging;可是我发现VS中没有什么System.Windows.Media.Imaging之类的框架,这就苦逼了,在网上也找不到,无意间发现原来引用不叫System.Windows.Media.Imaging,而是PresentationCore只需...转载 2020-05-02 07:39:44 · 2255 阅读 · 0 评论 -
建议3:区别对待强制转型与as和is之美
什么是强制转型呢,从语法结构上来看,类似下面代码。secondType=(SecondType)firstType;但是,强制转型可能意味着两件不同的事情:1、FirstType和SecondType彼此依靠转换操作符来完成两个类型之间的转型。2、FirstType是SecondType的基类。类型之间如果存在强制转型,那么他们之间的关系,要么是第一种,要么是第二种,不能同时...原创 2019-08-06 13:28:14 · 310 阅读 · 0 评论 -
建议2:使用默认转型方法之美
在大部分情况下,当需要对FCL提供的类型进行转型时,都应该使用FCL提供的转型方法。1、使用类型的转换运算符。2、使用类型内置的Parse、TryParse、或者如ToString、ToDouble和ToDateTime等方法。3、使用帮助类提供的方法。4、使用CLR支持的转型。下面分别对这些方法进行说明。1、使用类型的转换运算符。使用类型的转换运算符,其实就是使用类型...原创 2019-08-06 08:53:08 · 274 阅读 · 0 评论 -
KeyValuePair 和 Dictionary 的关系之美
KeyValuePair 和 Dictionary 的关系1、KeyValuePair a、KeyValuePair 是一个结构体(struct); b、KeyValuePair 只包含一个Key、Value的键值对。2、Dictionary a、Dictionary 可以简单的看作是KeyValuePair 的集合; b、Dictionary 可以包含多个Ke...转载 2019-08-07 13:46:23 · 383 阅读 · 0 评论 -
建议5:使用int?来确保值类型也可以为null之美
基类型为什么需要为null?考虑两个场景:1、数据库中一个int字段可以被设置为null。在c#中,值被取出来,为了将它赋值给int类型,不得不首先判断一下它是否为null。如果将null直接赋值给in类型,会引发异常。2、在一个分布式系统中,服务器需要接收并解析来自客户端的数据。一个int型数据可能在传输过程中丢失或被篡改了,转型失败后应该保存为null值,而不是提供一个初始值。可以...原创 2019-08-06 21:22:03 · 361 阅读 · 0 评论 -
建议4:TryParse比Parse好之美
如果注意观察除string外的所有基元类型,会发现他们都有两个将字符串转型为本身的方法:Parse和TryParse。以类型double为例,这两个方法最简单的原型为:1、public static double Parse(string s)2、public static bool TryParse(string s,out double result)区别:如果字符串格式不满足转换...原创 2019-08-06 21:03:20 · 373 阅读 · 0 评论 -
c#socket编程之美
一、IP地址操作类1、IPAddress类a、在该类中有一个Parse方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下:IPAddress address = IPAddress.Parse("192.168.0.1");b、IPAddress提供4个只读字段Any 用于代表本地系统可用的任何IP地址Broadcase 用于代表本地网络的IP广播地址...原创 2019-08-06 20:41:27 · 338 阅读 · 0 评论 -
建议6:区别readonly和const的使用方法
很多初学者分不清这两者的使用场合。在我看来,要使用const的理由只有一个,那就是效率。但是,大部分情况下,效率并没有那么高的地位,所以我更愿意采用readonly,因为readonly赋予代码更多的灵活性。它们的本质区别如下:1、const是应该编译期常量,readonly是一个运行时常量。2、const只能修饰基元类型、枚举类型或字符串类型,所以它天然就是static的,不能手动增加一...原创 2019-08-07 20:49:31 · 378 阅读 · 0 评论 -
委托事件之美
委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Obs...原创 2019-08-11 15:09:18 · 293 阅读 · 0 评论 -
c#操作mysql之美
案例一:using System;using System.Configuration;using MySql.Data.MySqlClient;public class Test{ public static void Main(String[] args) { MySqlConnection mysql = getMySqlCon(); ...原创 2019-08-13 10:57:43 · 1373 阅读 · 0 评论 -
C# 哈希表(Hashtable)之美
一 哈希表的定义:它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。二 哈希表中常用到的属性:三 哈希表常用到的方法:四 控制台中的代码 Hashtable ht = new Hashtable(); ht.Add("北京", "帝都"); ...转载 2019-08-30 14:19:07 · 255 阅读 · 0 评论 -
c#之反射 之美
反射定义 反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了特性,可以利用反射对它们进行访问。【MSDN】使用场景需要访问程序元数据的特性。 检查和实例化程序集中的类型。 在运行时构建新类型。使用System.Reflection.Emit中的类。 执...转载 2019-08-30 14:43:13 · 317 阅读 · 0 评论 -
C# 中的委托和事件之美
文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错,解决办法是显式的创建一个委托类型的实例(委托变量)。例如:委托类型 委托实例 = new 委托类型(方法名);欢迎浏览本文的后续文章: C#中的委托和事件(续)引言委托 和 事件在 .Net Framew...转载 2019-08-30 15:23:59 · 283 阅读 · 0 评论 -
C# 进阶笔记之美
C#(发音为 C sharp,正确写法应为 C♯),是一种简单、现代、通用、面向对象的编程语言,支持跨平台。支持结构化、面向对象、泛型等多种编程范型。深受 Visual Basic、Java、C/C++ 的影响。在很多方面与 Java 相似,但在面向对象特性上拥有许多优势。前言本文不包含 C# 语法中比较基础的部分,仅包含较为高级的语法。可空类型C# 提供了一个特殊的数据类型——n...转载 2019-09-06 16:06:54 · 443 阅读 · 0 评论 -
c#常用术语之美
并发•同时做多件事情。这个解释直接表明了并发的作用。终端用户程序利用并发功能,在输入数据库的同时响应 用户输入。服务器应用利用并发,在处理第一个请求的同时响应第二个请求。只要你希望 程序同时做多件事情,你就需要并发。几乎每个软件程序都会受益于并发。多线程•并发的一种形式,它采用多个线程来执行程序。从字面上看,多线程就是使用多个线程。多线程是并发的一种形 式,但不是唯一的形式。实际上...原创 2019-08-08 20:04:55 · 387 阅读 · 0 评论 -
建议 1:正确操作字符串
字符串应该是所有编程语言中使用最频繁的一种基础数据类型。如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价。本条建议将从两个方面来探讨如何规避这类性能开销。1、确保尽量少的装箱2、避免分配额外的内存空间指导原则:在自己编写的代码中,应当尽可能地避免编写不必要的装箱代码。注意:装箱之所以会带来性能开销,因为它需要完成下面三个步骤:1、首先,会为值类型在托管堆中...原创 2019-08-05 20:04:00 · 371 阅读 · 0 评论 -
string与stringbuild的不解之缘之美
string是引用类型,是不可变的。比如:string a="haomei";a=a+"unity";在这个例子当中,后面的a和前面的a不是同一个,而是重新创建了一个string对象,因为string是不可变的,只是把开始的a的值加上“unity”后所得到的结果赋值给了一个新的string变量,所以此时有2个string对象,如果频繁进行字符串操作会产生很多没有用的string对象...原创 2019-07-23 19:31:30 · 307 阅读 · 0 评论 -
vs常用快捷键大全之美
在c#当中,选择要定义为属性的一行语句然后按 Ctrl+r+e组合键就可以快速生成属性。比如: private int a;(选择这一行然后按上面说的快捷键就可以生成下面的属性了) public int A { get => a; set => a = value; }ctrl+k+f,代码格式化;Ctrl+F查找和替换switch按2下tab键,输入...原创 2019-07-23 19:52:34 · 309 阅读 · 0 评论 -
C# 扩展方法之美
C# 扩展方法扩展方法可以用新方法扩展现有类型改变原始类型的定义。扩展方法是静态类的静态方法,其中this修饰符应用于第一个参数。第一个参数的类型将是扩展的类型。例如:public static class StringExtension { public static bool IsCapitalized (this string s) { if (st...原创 2019-07-24 09:27:53 · 305 阅读 · 0 评论 -
c#一些基础重要知识点之美
一些注意点。原创 2019-08-03 17:37:34 · 305 阅读 · 0 评论 -
c#正则表达式之美
正则表达式的主要作用是验证字符串的值是否满足一定的规则,在页面输入数据验证方面的应用比较多。例如验证输入的邮箱是否合法、输入的身份证号码是否合法、输入的用户名是否满足条件等。正则表达式并不是 C# 语言独有的,在大多数的编程语言中都是支持的,包括一些脚本语言也支持,例如 JavaScript、JQucry 等。正则表达式是专门处理字符串操作的,其本身有固定的写法。正则表达式的符号主要分为元...转载 2019-07-24 11:35:20 · 346 阅读 · 0 评论 -
using关键字--释放资源之美
using 关键字可以用来导命名空间,与java中的import类似.使用using的地方 using(SqlConnection con=new SplConnection(connString)) { using(SqlCommand cmd=n...转载 2019-07-25 10:52:13 · 444 阅读 · 0 评论 -
C#泛型基础知识点总结之美
1.0 什么是泛型 泛型是C#2.0和CLR(公共语言运行时)升级的一个新特性,泛型为.NET 框架引入了一个叫 type parameters(类型参数)的概念,typeparameters 使得程序在设计的时候,不必设计其具体的参数,其具体的参数可以延迟到需要的时候声明或调用。使用泛型代码运行时避免了类型转换的装箱和拆箱操作。 2.0 泛型的延迟声明:把参数类型的声...转载 2019-08-02 21:55:15 · 298 阅读 · 0 评论 -
c#约束之美
五种约束类型(1)可以使用“基类约束”(base class constraint)来指定某个基类必须出现在类型实参中。这种约束是通过指定基类名称来实现的。(2)可以使用“接口约束”(interface constraint)来指定某个类型实参必须实现一个或多个接口。这种约束是通过指定接口名称来实现的。(3)可以要求类型实参必须提供一个无参数的构造函数,这被称为“构造函数约束”(constr...原创 2019-08-02 22:05:50 · 545 阅读 · 0 评论 -
c#泛型解析之美
"一次编码,多次使用",这就是引入泛型的根源。在以前的C++中称为模板,C#泛型通过算法和数据结构支持独立编码。例如,泛型列表意味着,你不必再重写一个强类型集合。在本文中,作者将向你展示定义和使用泛型是多么容易的事情-请注意,长期以来泛型一直被认为是最高级和最困难的术语。一、简介泛型现在在任何一种语言中都被认为是一个高级的强有力的术语。当我在C++中第一次接触模板时,我对之有些疑惑。之后,...转载 2019-08-02 22:25:10 · 282 阅读 · 0 评论 -
C# Socket编程 同步以及异步通信之美
套接字简介:套接字最早是Unix的,window是借鉴过来的。TCP/IP协议族提供三种套接字:流式、数据报式、原始套接字。其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少使用。套接字编程原理:延续文件作用思想,打开-读写-关闭的模式。C/S编程模式如下:服务器端:打开通信通道,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受请求,创...转载 2019-07-25 22:36:32 · 390 阅读 · 0 评论 -
C# IEnumerable和IEnumerator接口的简单介绍之美
C# IEnumerable和IEnumerator接口的简单介绍Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnumerator接口我有时候也有点迷糊,按官方的解释,IEnumerable是枚举器接口,IEnumerator是迭代器接口,从字面意思来看相差不大,逐一分析一下。IEnumerable接口 publi...转载 2019-08-04 09:17:21 · 460 阅读 · 0 评论 -
详解C#集合类型大盘点的图文代码之美
C#集体类型( Collections in C#) 集合是.NET FCL(Framework Class Library)中很重要的一部分,也是我们开发当中最常用到的功能之一,几乎是无处不在。俗话说知其然,知其所以然,平常看到IEnumerable,IEnumerator,ICollection是不是知道他们之间各自的区别?除了List和Dictionary以外,你还用过哪些其它...转载 2019-08-04 09:18:50 · 293 阅读 · 0 评论 -
c#IEnumerable接口之美
C#你可能不知道的陷阱, IEnumerable接口的示例代码详解:IEnumerable枚举器接口的重要性,说一万句话都不过分。几乎所有集合都实现了这个接口,Linq的核心也依赖于这个万能的接口。C语言的for循环写得心烦,foreach就顺畅了很多。我很喜欢这个接口,但在使用中也遇到不少的疑问,你是不是也有与我一样的困惑:(1) IEnumerable 与 IEnumerat...转载 2019-08-04 09:20:12 · 694 阅读 · 0 评论 -
C# 深浅复制之美
最近拜读了大话设计模式:原型模式,该模式主要应用C# 深浅复制来实现的!关于深浅复制大家可参考MSDN:https://msdn.microsoft.com/zh-cn/library/system.object.memberwiseclone.aspx所谓深浅复制可解读为:浅复制:在C#中调用MemberwiseClone() 方法即为浅复制。如果字段是值类型的,则对字段执行逐位复制...转载 2019-08-04 12:37:20 · 279 阅读 · 0 评论 -
c#抽象类和接口的比较
原创 2019-07-27 23:01:21 · 543 阅读 · 0 评论 -
==与equal的不解之缘之美
一、比较对象为基本数据类型的时候比较两个基本数据类型是否相等用==,因为只有继承了object类才会有equals方法。注意:string是引用类型二、比较对象为引用数据类型euqals和==本质上都是比较比较的是两个对象的引用(内存地址)是否相同。equals()是Object类的方法 ,object类是所有类的基类,所以每个类都会继承equals()方法。但在String,Integ...原创 2019-07-23 19:16:35 · 268 阅读 · 0 评论