C#
GarfieldEr007
这个作者很懒,什么都没留下…
展开
-
C#的十大遗憾
本文翻译自 Eric Lippert 的博客 https://ericlippert.com/2015/08/18/bottom-ten-list/。他曾经是 C# 设计组的一员,而且是 《Essential C# 6.0》 第5版的作者之一。-------- 分割线 -----------我以前在 C# 设计组的时候,每年都有几场见面会活动,回答 C# 爱好者的问题。最常见的问题可能转载 2016-07-12 20:42:31 · 2379 阅读 · 1 评论 -
索引器 c#
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。1、索引器的定义C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。定义索引器的方式与定义属性有些类似,其一般形式如下:[修饰符] 数据类型 this[索引类型 index]{get{//获得属性的代码}s...转载 2018-12-20 09:21:42 · 605 阅读 · 0 评论 -
C# 索引器使用总结
1、索引器(Indexer):索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于他们的访问采用参数。最简单的索引器的使用 代码如下: /// <summary> /// 最简单的索引器 /// </summary> public class IDXer { private...转载 2018-12-20 09:22:31 · 687 阅读 · 0 评论 -
C# 索引器(Indexer)
索引器(Indexer) 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符([ ])来访问该类的实例。语法一维索引器的语法如下:element-type this[int index] { // get 访问器 get { // 返回 index ...转载 2018-12-20 09:24:05 · 779 阅读 · 0 评论 -
深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类、类成员函数、类成员变量进行访问控制。同时,访问控制符也是语法保留关键字,用于封装组件。Public, Private, Protected at Class Level在创建类时,我们需要考虑类的作用域范围,如谁可访问该类,谁可访问该类成员变量,谁可访问该类成员函数。 换而言之,我们需要约束类成员的访问范围。一个简单的规...转载 2018-12-20 09:30:53 · 825 阅读 · 0 评论 -
C#类中的internal成员可能是一种坏味道
前言最近除了搞ASP.NET MVC之外,我也在思考一些编程实践方面的问题。昨天在回家路上,我忽然对一个问题产生了较为清晰的认识。或者说,原先只是有一丝细微的感觉,而现在将它和一些其他的方面进行了联系,也显得颇为“完备”。这就是问题便是:如何对待类中internal成员。我现在认为“类中的internal成员可能是一个坏味道”,换句话说,如果您的类中出现了internal的成员,就可能是设计上...转载 2018-12-20 12:41:49 · 898 阅读 · 0 评论 -
C#图解教程
基础1、virtual和new - Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法; - virtual关键字不可以与static、abstract、private、override一起使用。 - Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new...转载 2018-12-16 15:16:19 · 809 阅读 · 0 评论 -
C#里partial关键字的作用
1. 什么是局部类型?C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。局部类型适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类。局部类型是一个纯语言层的编译处理,不影响任何执行机制——...转载 2018-12-19 12:36:21 · 642 阅读 · 0 评论 -
C# partial 关键字详解
我们新建一个Windows Form时,后台代码都会自动添加如下代码:1 public partial class Form1 : Form2 {3 public Form1()4 {5 InitializeComponent();6 }7 }为什么类Form1 要用partial修饰?partial主要用在哪些地方? 为什么新建立的...转载 2018-12-19 12:37:30 · 681 阅读 · 0 评论 -
c# partial class 的用法
partial class A 就是说明这是类A 只是一部分。我可以在创建一个类B.cs。在代码里也写partial class A。那么程序在编译后。两个 A中的属性和方法会合并在一起统一叫做类A的成员。partial关键字 C#2.0提供的新关键字,用来将一个class、struct或interface的定义拆分,写在不同的源文件中。每个源文件包含类定义的一部分,编译应用程序...转载 2018-12-19 12:39:10 · 1922 阅读 · 0 评论 -
Learning hard C#学习笔记 C#简介
第 1 章 你真的了解C#吗在正式介绍C#的语法和特性之前,让我们首先来了解下它的发展历程。因为只有知道了C#的概貌和由来,积累了必要的背景知识,我们才能更好地掌握C#,进而使用C#来编程。1.1 什么是C#C#(发音为C Sharp)是由微软公司开发的一种面向对象且运行于.NET Framework之上的高级程序设计语言。它的基本语法与C和C++类似,但相比较而言,C#更加简单易学。...转载 2019-02-28 22:29:25 · 1663 阅读 · 1 评论 -
Learning hard C#学习笔记 孤军深入
第 2 章 来点C#的感觉在介绍C#语言的基本特性之前,让我们来点C#的感觉,通过亲手创建一个简单的控制台程序,叩开C#的大门!控制台应用程序没有图形化的界面,它类似于Windows操作系统中的命令行窗口。2.1 开发环境的搭建用C#语言开发应用程序,首先要搭建好相应的开发环境。学过C语言的人都知道,Turbo C是C语言的开发工具,而Visual Studio 2010(简称VS20...转载 2019-02-28 22:30:45 · 1207 阅读 · 0 评论 -
C#调试心经
我们在做程序开发时,难免会遇到错误异常。如何快速地找到出错的地方、分析错误的原因以及找到解决问题的方案,是许多初级程序员困扰的问题,这也正是经验的宝贵之处。下面我将简单介绍在Visual Studio中调试以及一些高级的调试和常见的错误。PS:如无特别说明Visual Studio均指Dev10即Visual Studio 2010。入门篇假设你是有着.Net平台的程...转载 2019-02-28 22:48:05 · 695 阅读 · 0 评论 -
C#String与string大小写的区别
1.string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色)2.C# string映射为.net Framework的String3.如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作。如果使用c#,建议使用string,比较符合规范4.String始终代表 System...转载 2019-03-02 00:11:47 · 3318 阅读 · 0 评论 -
C#命名规则和编码规范
1. 用Pascal规则来命名属性、方法、事件和类名 1 2 3 4 5 6 public class HelloWorld { public void SayHello(string name) { } } Pascal规则是指名称中单词的...转载 2019-03-05 23:09:05 · 1214 阅读 · 0 评论 -
VS.Net中程序集的Debug版本和Release版本的区别
前几天看到豆腐的文章介绍如何知道程序集是Debug版还是Release版,之前只知道某些软件从功能上有企业版、标准版之分,却从不知道.Net程序集还有Debug和Release之区别,真是惭愧学了这一年C#。然后在博客园的提问区发文求教,两天过去竟无人问津(还是自己太懒,要检讨),只好自己翻MSDN、用Google搜,现在总算有点明白了。关于Debug和Release,MSDN里面是这么说的:...转载 2019-03-13 23:06:15 · 757 阅读 · 0 评论 -
VS 关于 .sln 文件和 .suo 文件
Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息,从而在每次继续开发任务时,不会因开发环境而分散精力; *.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案...转载 2019-03-09 14:03:43 · 1933 阅读 · 0 评论 -
C# 索引器使用总结
1、索引器(Indexer):索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于他们的访问采用参数。最简单的索引器的使用 /// <summary> /// 最简单的索引器 /// </summary> public class IDXer { private str...转载 2018-12-20 09:20:52 · 717 阅读 · 0 评论 -
C#委托使用详解(Delegates)
摘要委托是C#编程一个非常重要的概念,也是一个难点。本文将系统详细讲解委托。 1. 委托是什么?其实,我一直思考如何讲解委托,才能把委托说得更透彻。说实话,每个人都委托都有不同的见解,因为看问题的角度不同。个人认为,可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。 (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。既然委托是...转载 2018-12-15 13:24:50 · 654 阅读 · 0 评论 -
c#中的delegate(委托)和event(事件)
一、delegate到底是什么东西 孩子,C语言总学过吧,如果你学得不像我那么差的话,函数指针总用过吧,就算没用过总听说过吧,嗯,大胆的告诉你,你完全可以把delegate理 解成C中的函数指针,它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m,说白了就是可以把方法当作参数传递。不过 delegate和函数指针还是有点区别的,delegate有许多函数指针不...转载 2018-12-14 14:02:57 · 1580 阅读 · 0 评论 -
有史以来最简单的三层实例(C#)
三层已经学了很久了,一直没有写博客是因为自己感觉对三层的理解还太肤浅,怕写的不对误导别人。当然就现在我的水平而言对于三层的理解还是不够深刻,但是我感觉不至于误导别人了,所以将我对于三层的一些理解写出来,希望会对和我当初一样迷茫的菜鸟一些帮助! 回想当初我学习三层的时候,在网上寻找关于三层的知识,找到了很多例子,但是感觉它们都有些复杂,不太适合刚刚接触三层的人学习,所以我决定写一个简转载 2017-01-05 23:09:00 · 1482 阅读 · 1 评论 -
C#图解教程
基础1、virtual和new - Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法; - virtual关键字不可以与static、abstract、private、override一起使用。 - Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new...转载 2018-12-02 22:58:20 · 1253 阅读 · 0 评论 -
C# 与 Java 语言机制与语法的异同
本文是 从 C# 到 Java 系列的文章。此系列文章是为了方便从 C# 转到 Java 平台的工程师快速学习新的语言和平台。整个系列的目录请点击此处浏览。这篇文章从基础的语言机制、语法层面来分析 C# 和 Java 的不同。部分与虚拟机(CLR | JVM)有关的不同会放在相关的另一篇里,详见总目录。1.命名规范Java 中的方法和变量,无论是否为public,都要以小写字母开头,其...转载 2018-11-27 22:17:20 · 959 阅读 · 0 评论 -
java程序员学C#基本语法两个小时搞定(对比学习)
对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想。1.引包 using System;java用import2.构造函数和java语法相同3.析构函数 变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销。 类的对象被撤销时,将自动调用析构函数。一些善后工作可放在析构函数中...转载 2018-11-27 22:18:47 · 1287 阅读 · 0 评论 -
JAVA程序员看C#的精华与糟粕
C#和java是号称90%的相同加上10%的不同。因此当时我学习C#,阅读两种代码完全没有什么阻碍。对C#了解得深入以后,来发表下对这两种语言各自特性的一些看法比较起java和C#大相径庭的那10%,会发现C#五花八门的特性要多很多。比较知名的有:委托,属性,真正的泛型,索引器,类初始化器,分部类,操作符重载,struct,unsafe代码,IDisposable等,另外.net fr...转载 2018-11-28 18:46:16 · 760 阅读 · 0 评论 -
比较C#和Java
本文对比C#与Java编程语言。 因为这两种语言都具有自动垃圾回收以及运行时编译执行的特点,并且他们的语法都是继承自C语言/C++,因此二者有很多相似之处。但由于C#也被描述为一个C++和Java的混合体,并添加了一些新特性,引入了一些变化,因此C#和Java自然也有很多不一样的地方。这个条目描述了二者总体上的相似性,并列举了二者的不同点。 目录1语言 1.1对象处理 ...转载 2018-11-28 18:46:21 · 1222 阅读 · 0 评论 -
c#与java对比
#c#课时01 ##c#与java对比 ###创建: 文件-新建-项目-VisualC#-控制台应用程序。 ###结构: C#:using System;namespace HelloWorld{ class Hello { static void Main() { Console.WriteLine("Hello World!"); ...转载 2018-11-28 18:46:26 · 1873 阅读 · 0 评论 -
桌面程序开发入门(WinForm with C#)
1、使用Visual Studio 2013创建新项目2、创建一个主窗体和4个子窗体3、创建一个数据库、一个表、一个存储过程4、在配置文件里添加数据库连接字符串5、真正的编码工作。第一步:创建新项目,一张图片抵一万字!看图说话,呵呵。。第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCr...转载 2018-12-14 12:59:11 · 2692 阅读 · 0 评论 -
Linq 多表连接查询join
在查询语言中,通常需要使用联接操作。在 LINQ 中,可以通过 join 子句实现联接操作。join 子句可以将来自不同源序列,并且在对象模型中没有直接关系(数据库表之间没有关系)的元素相关联,唯一的要求是每个源中的元素需要共享某个可以进行比较,以判断是否相等的值。在 LINQ 中,join 子句可以实现 3 种类型的联接分别是内部联接、分组联接和左外部联接。 1、内部连接(相对于sq...转载 2018-12-14 13:00:12 · 1248 阅读 · 0 评论 -
大白话系列之C#委托与事件讲解(一)
从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个意思,除非委托2个中文字不认识,举个例子,小明委托小张去买车票。 但是在我们的程序世界里,也是这么的简单吗?当然,什么是OO,OO就是现实世界的抽象,所有现实世界的事物,在OO里都能得到很...转载 2018-12-14 13:49:54 · 623 阅读 · 0 评论 -
大白话系列之C#委托与事件讲解(二)
什么是事件?EVENT?点击事件?加载事件?一连串的模糊的概念冲击着我们弱小的脑袋那我们首先来看一下比较正统的感念吧:事件是类在发生其关注的事情时用来提供通知的一种方式。事件的发生一般都牵扯2个角色事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知说有的事...转载 2018-12-14 13:51:33 · 608 阅读 · 0 评论 -
大白话系列之C#委托与事件讲解(三)
今天我接着上面的3篇文章来讲一下,为什么我们在日常的编程活动中遇到这么多sender,EventArgs e 参数:protected void Page_Load(object sender, EventArgs e){}protected void btnSearch_Click(object sender, ImageClickEventArgs e){}protect...转载 2018-12-14 13:52:33 · 587 阅读 · 0 评论 -
大白话系列之C#委托与事件讲解大结局
今天是大白话系列之C#委托与事件讲解的大结局,也是我们最关心的,在日常的MES系统编程中到底怎样使用这样的利器,其实我们每天都在使用事件,一个窗体,一个按钮都包含这事件,只是很少用到自己写的委托和事件,说白了不知道如何下手,也不知道在什么样的场景下应用。用到事件的地方有很多,这次讲解就MES系统开发中我们经常应用的场景。一、通用控件场景通用控件有很多,这里举最常用的万能通用分页控件【注:...转载 2018-12-14 13:53:39 · 617 阅读 · 0 评论 -
C#委托的介绍(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。 例:public delegate int MethodtDelegate(in...转载 2018-12-14 13:54:35 · 734 阅读 · 0 评论 -
【C#学习】delegate(委托) 和 event(事件)
C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。在C#中方法不能作为参数直接传递,必须使用委托(用来委托方法)。delegate(委托)是一种特殊的引用类型,它将方法也作为特殊的对象封装起来,从而将方法作为变量、参数或者返回值传递。委托(Delegate)特别用于实现事件和回调方法。所...转载 2018-12-14 13:57:46 · 683 阅读 · 0 评论 -
C# 委托(Delegate)
什么是委托委托跟类一样,是用户自定义的类型。但类是表示数据的集合,委托是具有兼容返回类型和输入参数的方法或lambda表达式的集合。 如果你学过C++,那么可以把委托理解为指向函数的指针。但是,委托是类型安全和可靠的。 你可以把委托看做一个包含有【有序方法列表】的对象。这些方法具有相同的返回类型和签名(参数列表,包括ref和out修饰符)。 在调用委托时,会执行【有序方法列表】的所有方法。...转载 2018-12-14 14:02:00 · 680 阅读 · 0 评论 -
C#变量名重构快捷键
C#变量名重构快捷键:连续两次Ctrl+R原创 2019-03-07 22:32:57 · 1530 阅读 · 0 评论