C#--零碎总结

一、单例模式

1、非线程安全
        public static MainForm instance;
        public static MainForm CreateForm()
        {
            if (instance == null || instance.IsDisposed)
            {
                instance = new MainForm();
            }
            return instance;
        }
2、线程安全且不用用锁

public static readonly FanucDataWatch instance = new FanucDataWatch();

---------------------------------------------------------------------------------------

二、事件重装理解

如何理解事件处理this.Paint+=new PaintEventHandler(Form1_Paint)?
this:指的是Form1窗体运行时的实例
this.Paint:指是这个窗体运行时实例的Paint事件,这个事件是所有继承Form都有的事件
new PaintEventHandler(Form1_Paint); 创建了一个PaintEventHandler事件,这个事件调用的方法是Form1_Paint(这个方法是你自己写的那个)
+=就是事件重载的方法,相当于将上面创建的事件,挂到this.Paint的事件下。
当this.Paint事件触发后,就会自动调用你写的Form1_Paint这个方法。

你先理解一下,这个主要涉及到事件,这个你需要看看一些资料,理解的会更好一些。

---------------------------------------------------------------------------------------

三、解释下c#中List<string>的用法

 List<string> listdata=new List<string> ();是什么意思?

这是创建了一个只能装T类型的泛型集合。
也可以理解为一个高级的数组,List<T>比普通的数组拥有更多的属性和方法。能完成更复杂的业务需求。
比如普通的数组必须定义长度且长度是固定的,而List<T>是可以随意改变长度的。
泛型顾名思义通用类型集合在List<>里面可以放任何类型数据或者实体类
string[]只能存放string格式数据
比如利用List<>存放一个实体类User
List<User> list=new List<User>();
User为你构造出来的对象,里面可以有属性,方法等,这就是面向对象。

而String[]只是存放值而已,不是对象,区别大吧。  

----------------------------------------------------------------------------------------

四、lambda用法

lambda的具体写法形式:隐式表达即没有指定参数类型(因为编译器能够根据上下文直接推断参数的类型)

(x, y) => x * y              //多参数,隐式类型=>表达式    
x => x * 5                   //单参数,隐式类型=>表达式    
x => { return x * 5; }       //单参数,隐式类型=>语句块    
(int x) => x * 5             //单参数,显式类型=>表达式    
(int x) => { return x * 5; } //单参数,显式类型=>语句块    
() => Console.WriteLine()    //无参数


Lambda表达式规则:
表达式位于=>运算符的右侧  (input parameters)=>expression
当Lambda只有一个输入参数的时候,括号才是可选的,否则括号是必须的。
例如:(x,y)=>x==y
有时候当编译器无法判断类型的时候,出现这种情况,你可以显式指定参数类型
例如:(int x,string y)=>s.length > x
当使用空括号表示指定0个参数

例如:()=>SomeMethod()     

---------------------------------------------------------------------------------------

五、Form.cs和Form.Designer.cs

Form.cs和Form.Designer.cs其实是一个类,Visual Studio为了让我们方便管理,用partial关键字把窗体类给拆开了,Form.Designer.cs存放的是窗体的布局,你的窗体定义了哪些控件,那些控件的名字、属性等等,都是存放在Form.Designer.cs里面的,而Form.cs则是用来存放处理方法的,比如你的按钮点击事件绑定了Button_Click这个方法,就会出现在Form.cs里,而Form.resx则是用来存放你的窗体资源的,比如你自定义了你的窗体的图标,这个图标就会出现在Form.resx里面。其实在早期版本的Visual Studio里,是没有Form.Designer.cs的,窗体的设计类和逻辑类全在一个文件里。那么好处就显而易见了:便于管理。让你编程的时候能够更加直观。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值