
C#
对代码产生感觉的开始
kawaniu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
依赖注入实例3——接口注入
接口注入:也就是说将注入的代码放在了接口里,与构造函数和属性注入在整体代码结构上不同。用接口可以提高类的灵活性,将注入的代码抽象出来放入接口里这样就不只是Order类可以写入数据库了,其他的类如果也想写入数据库去实现接口即可。本篇代码与前两篇结构一样,只是多了个注入用的接口SqlServerDal、Access类:using System;namespace Ioc2{ ...原创 2020-03-16 12:17:32 · 1836 阅读 · 8 评论 -
依赖注入实例2——属性注入
代码整体结构和上篇构造函数注入一样,只是在Order类下将构造函数的形式改为了属性的形式,通过为属性赋值的方式实现注入SqlServerDal、Access类:using System;namespace Ioc2{ class SqlServerDal : IDataAccess { public void Add() { ...原创 2020-03-16 11:46:05 · 264 阅读 · 4 评论 -
依赖注入实例1——构造函数注入
前言:三种注入的例子都是用C#写的,沿用上篇博客订单与数据库的例子构造函数注入:顾名思义,就是用构造函数的形式来实现注入与上篇博客不同的是这里多了一个接口,Order中注入的是接口,而不再是具体的类。SqlServerDal、Access类:数据库实现接口,具有了添加订单的功能using System;namespace Ioc2{ class SqlServ...原创 2020-03-15 15:29:21 · 822 阅读 · 4 评论 -
依赖注入
如果类A中有类B的实例,则称类A对类B有一个依赖现要将一条订单添加到数据库中,需要如下代码,则Order类对SqlServerDal类有一个依赖public class Order{ SqlServerDal sqlServerdal; public Order { sqlServerdal=new SqlServerDal(); }...原创 2020-03-15 14:49:34 · 297 阅读 · 4 评论 -
VS如何取消git
在敲牛腩新闻发布系统的构成中,手误点了一下git,结果解决方案管理器下的列表前出现了红色的对勾——挂起、锁符号、还有一些莫名其妙的符号。网上查了一下,原来是把代码提交到VS自带的git仓库了,并且新写的代码和之前的不一致。对于还是小白的我来说是带来了不必要的麻烦。如何取消代码与git的关联呢,我用的方法是取消git对VS代码的管理。过程如下:按提示进行即可...原创 2020-01-18 15:56:51 · 5809 阅读 · 17 评论 -
计算器项目总结(VS , C#)——三层搭建、添加App.config、添加主函数
经过一段时间对面向对象的学习,我借用了三层的思想对我的计算器进行了重构。搭建三层架构、添加App.config配置文件:首先新建一个空白的解决方案然后右键解决方案添加类库,注意命名这是我建好的类库类库有了,接下来就要建立他们之间的引用了。展开类库,右键点击引用,点击项目,在要引用的类库前画对勾,确定谁引用谁呢:我这里是UI引用BLL,BLL引用DAL的一个由外向...原创 2019-12-29 16:06:28 · 1055 阅读 · 24 评论 -
Switch语句优化——用反射增强其扩展性
使用简单工厂和分层的思想对winform计算器项目进行了实践(项目代码见后期分享),在写工厂代码的时候用到了switch case语句对具体的计算方法进行了实例化代码如下class OperateFactory { public static Operate CreateOperate(string oper) { Operat...原创 2019-12-13 20:57:04 · 779 阅读 · 19 评论 -
SqlHelper代码——C#版
打开配置文件(web程序是Web.config,winform程序是App.config),在<configuration> <configuration/>里写如下代码<appSettings/> <connectionStrings> (winform连接出问题可以在此处加上这行代码试试:<add key="DB" ...原创 2019-11-16 16:53:34 · 393 阅读 · 30 评论 -
静态方法与非静态方法
在重构时不知道大家有没有注意到一个问题,当一个类调用另一个类的方法的时候,有的方法能直接用类名点出来,有的方法需要用实例化出来的对象才能点出来。当时没太在意这个问题,今天看牛腩时里面提到了,就又查了查,到现在才理解。能直接用类名点出来的方法是静态方法,也就是用static修饰的方法。静态方法只能访问类中的静态成员,方法中不能用this等关键字,因为它属于整个类,它的效率要比实例化高,但占内存。...原创 2019-11-11 21:28:48 · 537 阅读 · 24 评论 -
out 与ref参数
来看定义:1、ref的使用:使用ref进行参数的传递时,该参数在创建时,必须设置其初始值,且ref侧重于修改; 2、out的使用:采用out参数传递时,该参数在创建时,可以不设置初始值,但是在方法中必须初始化,out侧重于输出;注释:当希望方法返回多个值时,可以用out,并且一个方法中的参数可以有一个或多个out参数;使用out参数,必须将参数作为out参数显式传递到方法中,但是...原创 2019-09-03 08:33:59 · 612 阅读 · 12 评论 -
代码保存(控制台应用)——通信类
代码没能实现,仅收藏供后期学习备用:服务器端:static void StartServerAyync() { //tcp数据流方式,流模式 //创建服务器套接字 Socket serverSocker = new Socket(AddressFamily.InterNetwork, SocketTy...原创 2019-08-11 20:11:09 · 238 阅读 · 14 评论 -
SQL语句能这样写?——拆分SQL语句
在写DAL层的时候,对数据库的操作仅用到增删改查,却要写那么多方法来应对功能上的需求,为了图个方便,我进行了一次大胆的尝试:将查询内容全部参数化,提高SQL语句的功能。代码思路如下: //根据需要更新商品某字段 public int UpdateGoods(GoodsInfo goods, string field,object value) { ...原创 2019-08-09 20:36:54 · 1566 阅读 · 12 评论 -
C#方法与参数
看了上篇封装方法,大家对封装多少也清楚点了吧,下面该说带参数的封装了。用好封装,可以减少大量的冗余代码。这里的封装可以是一个过程的封装(void),也可以是对一个目标结果的封装:int,string等,需要return一个结果,这个方法就代表封装处理后的最终结果(可以回忆一下飞行棋的方法)。如果说封装是一个工厂,那么参数就是这个工厂的灵魂。有了参数,封装的方法就变活了,参数的作用好比是一个坑、...原创 2019-08-09 20:03:33 · 400 阅读 · 5 评论 -
C#快捷键入门
在学习C#过程中,经过有意识的练习,我现在差不多可以做到写代码时脱离鼠标了,VS中快捷键非常多,记肯定是记不住的,得去用,所以学的过程中不能急,一个一个来,不要因为不习惯而不去用。说到这里就不得不提一下快捷键的重要性了,首先可以节省你动手挪鼠标的时间,减少胳膊的动作,从而提高代码生成速度;在写代码过程中打错字母是常事儿,你知道吗,用快捷键可以在快的基础上纠正并打出你想要的东西;快捷键最重要的当...原创 2019-02-10 09:04:41 · 357 阅读 · 13 评论 -
C#小结
C#已经看了几个文件夹了,虽然讲的问题都不难,但深挖一下还是有可观的财富的。1、a=7, b=3,如何交换a,b的值?A:直接交换:a=b,b=a,肯定会丢一个值,不可行B:这时我想到的是添加一个容器c,先把其中一个值放在容器中,这样就空出了一个字母,比如放a,然后把b的值赋给a,再把容器中a的值拿出来赋给b,看操作:c=a,a=b,b=c,这样通过外加一个容器的方法就实现了值的交换。...原创 2019-01-31 09:13:42 · 236 阅读 · 13 评论 -
图说里式转换
查了很多关于里式转换的概念,都是讲什么子类转父类,父类转子类的内容,把我转懵了。在自己不懈的努力下终于看到了点眉目。里式转换到底是什么东东,看图:1.父类直接转换为子类——出错:Person P = new Person();Student stu = (Student)p;//stu调用父类方法会报错2.父类想转换为子类——实例化是关键Person p = new ...原创 2019-03-06 11:43:04 · 278 阅读 · 11 评论 -
关于类,这些老朋友你还记得吗
如果说程序是对现实世界的模拟,那么类就是对现实世界中元素的总结、概括。在编程中,对象就是元素,它是一个自包含的实体,用一组可识别的特性和行为来标识,而类就是具有相同的属性和功能的对象的抽象的集合,用 class 表示。类写好后得用啊,怎样用呢,就是把这个类真实化,真实完后就变成了实例,这个过程叫实例化,就是创建对象的过程,用 new 关键字创建。好比是现实世界中我们都对“龙”有概念,它的特...原创 2019-04-28 16:21:40 · 163 阅读 · 10 评论 -
c#获取时间间隔
//得到时间差 public string DateDiff(DateTime datetime1, DateTime datetime2) { string dateDiff = null; try { TimeSpan ts1 = new T...原创 2019-06-08 08:45:35 · 1204 阅读 · 7 评论 -
当C#遇上NPOI导出Excel
用NPOI可以实现Excel的导入与导出,下面我先介绍将c# 的datagrideview中数据导出到Excel功能(将Excel导入datagrideview后续补充。)第一步:在你的项目文件夹中可以建立一个名为lib的文件夹,并将插件文件放入里面第二步:将上图所有.dll格式的文件在项目中所需此功能的位置进行添加引用(我在U层引用的)第三步:有了插件的支持然后就可以写代码了。我...原创 2019-06-30 16:24:54 · 340 阅读 · 18 评论 -
SQLserver 用代码创建的数据表哪去了
在用代码创建数据库和数据表时遇到了一个问题,能找到创建的数据库,但找不到创建的数据表,无论如何刷新都不出来,代码如下:--建立数据库create database newssystem--建立类别表create table category( id int identity(1,1) primary key, [name] varchar(20) not null,)-...原创 2019-07-18 15:32:11 · 7518 阅读 · 13 评论 -
VS设置背景色
用C#写代码时有没有感觉默认的背景色很刺眼。调成黑色?个人感觉黑色有点压抑,经研究发现了一个比较合适的背景色——绿豆沙色。跟着我的脚步来试试吧。打开VS,按如图操作在C#编码时经常会用到数字“0”和字母“O”,但它俩长得一样,混淆使用会带来很大的麻烦,如何区分?别急,用上图的Consolas字体就可以区分开了。我想问问大家有没有可以区分数字“1”和字母“L”的字体?欢迎大家留言...原创 2019-07-12 10:32:27 · 9229 阅读 · 12 评论 -
C#封装方法初步认识,实例讲解
面向对象的三个特征是继承、封装和多态。学习完设计模式后,我们对继承有了一定的了解,接下来就是机房重构的学习了。在写代码过程中,我们会有意无意的用到封装,那么什么是封装?封装有什么好处?我理解的就是将一段代码拿出来放在一个方法里并给这个方法起个名,需要这段代码时只需要叫这个方法的名就行,不必关心它的处理过程。在这里这个处理过程就被封装到了方法里。至于这样做的好处,到现在会一目了然了吧。在代码...原创 2019-08-03 11:39:04 · 826 阅读 · 4 评论 -
C#玩转图片存取
困扰了我一天半的图片转化存取今天终于解决了,图片的存取只是比普通数据的存取多了个转换数据的过程,这个转换是真的皮啊。话不多说,先看整体效果:转化图片为二进制流+存入数据库+将二进制流图片转化为图片并显示在图片框/// <summary> /// 将图片路径转为二进制流 /// 数据库开销相对较小 /// 通过商品名改图片 ...原创 2019-08-08 11:35:46 · 578 阅读 · 7 评论 -
输入班级人数,录入每个同学的成绩并求平均值
在VB中我们可能通过循环,甚至添加几个控件来实现这个功能,在现学的C#中用的代码思路很简单,逻辑感觉还是有点不好理解,毕竟刚接触C#。现在再看VB觉得代码很直白,可能是用的时间比较长的缘故吧,就是和说话差不多。相比之下感觉实现题目功能还是C#比较少。OK,看代码和注释:static void Main(string[] args) { //统计每个...原创 2019-02-01 20:35:54 · 9508 阅读 · 10 评论