![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#基础
本人对C#基础的理解
xalloy_machine
这个作者很懒,什么都没留下…
展开
-
反射,特性-C#
反射就是对程序集中的元数据进行检查的过程.利用反射,我们可以拿到一个类,或者一个文件的元数据.元数据就是一个类有多少方法,多少字段,哪些字段,是不是公共等…拿到这些数据,可以用来动态化编程等…GetType() typeof()首先我们来准备一个类using System;using System.Reflection;namespace CSharplearn{ class Program { static void Main(string[] args) { } } cl原创 2020-06-05 21:48:50 · 225 阅读 · 0 评论 -
集合,Linq-C#
抛砖引玉在讲集合之前,先来看看他的表亲 数组int[] a = new int[10];通过这样的语句,我们声明了一个int数组,长度为10.但是数组有个问题.如果这个数组未来根据业务需要要改变长度,添加新的数据进去,那么这个数组根本不成立了!因为数组不允许修改长度!你还有一种极端的方法选择,那就是Array.Resize(ref a,15);Array.Resize方法首先会创建一个长度为15的数组,把原来的数组赋值给新数组,然后把原来的数组给删了!这意味着如果有什么代码在运行时监测原来原创 2020-05-25 15:27:00 · 429 阅读 · 0 评论 -
Func与Action-C#
阅读本文之前你先要了解什么是委托https://blog.csdn.net/XiuGaiZhong/article/details/106242588Func与Action是C#提供的两个委托类型.当我们想使用委托,但是又懒得自己去声明一个委托的时候,我们就可以用到Action和Func.Action是无返回值的委托,但是他有17种版本,最大可以用16个参数.来看看他长什么样./*第一种,无参无返回值*/public delegate void Action();/*最后一种,有16个参数无返回值原创 2020-05-22 11:33:11 · 247 阅读 · 0 评论 -
Lambda-C#
Lambda的存在意义就是为了简写让工作效率提升.最常见在于委托.当我只需要为委托传一个只会用一次的方法,我还要大费周章的去写那个方法嘛?有了Lambda就不用了语句LambdaLambda在不同的场景下有不同的含义,但用法大同小异(参数) => {方法体};他的意思这些参数 用于 后面的方法体.光看这个抽象的用法你理解不了他的真正意义,来吃点栗子public int Plus(int a, int b) { int result; result = a + b; return r原创 2020-05-22 11:13:57 · 192 阅读 · 0 评论 -
struct与enum-C#
struct我们经常会专门声明一个类来存放数据,但是C#其实已经提供了一个东西来存放数据,那就是struct.struct声明出来的结构体是一个值类,这里要注意.struct的用法和class差不多struct 结构名{属性或者字段}栗子时间struct Func{ public string Method1; public string Method2; public string Method3; public string Method4;}这是一个Func结构体,带有四原创 2020-05-22 00:30:56 · 353 阅读 · 0 评论 -
接口-C#
接口和抽象类很相似,他也是给其他类提供一个代码规范,但他和抽象类异同是(转自https://blog.csdn.net/chengmuzhe2690/article/details/80764327)原创 2020-05-21 20:22:38 · 120 阅读 · 0 评论 -
继承-C#
假设我们有数个类,这些类都用到了同一个方法,属性,字段什么的,于是我就要重复n次复制黏贴那些重复代码,感觉很差.这时候,继承这个概念就跳出来了,你可以设置一个基类,里面写好每个子类重复的代码,然后写子类去继承基类.假如我们要做一个有关于各种形状的程序,那就离不开三角形,圆形,正方形什么的.这些几何形状都离不开一个本质那就是他们都是形状,都有周长和面积.class Shape{ double Area; double Perimeter;}Area是面积,Perimeter是周长,这是我们知原创 2020-05-21 18:32:33 · 314 阅读 · 0 评论 -
事件,EventHandler-C#
要了解事件,必须先了解委托[https://blog.csdn.net/XiuGaiZhong/article/details/106115407(https://blog.csdn.net/XiuGaiZhong/article/details/106115407)事件就是委托的实例,怎么理解?Remainder remainder = new Remainder(RemainderLogic);这里的remainder就是委托的实例,而假如我声明一个事件,...原创 2020-05-20 14:58:12 · 561 阅读 · 0 评论 -
委托-C#
包装成变量我们先来看委托的用法using System;namespace CSharplearn{ class Program { public delegate void Remainder(int num);//声明委托 static void Main(string[] args) { Remainder remainder = new Remainder(MethodRemainder/*传给委托的方原创 2020-05-14 23:27:17 · 183 阅读 · 0 评论 -
方法重载,构造函数重载-C#
方法重载就是说同样一个方法名,传递的参数类型和个数不同,实现的方法也不同.Console.WriteLine()就是一种方法重载,虽然我们传什么他就打印什么,但是遇到字符串,变量等,他的内部处理机制会不相同.现在要求写一段代码,有一个方法,当向他传递字符串就打印Hello World,传递字符就打印"你好世界".using System;namespace CSharplearn { class Program { static void Main(string原创 2020-05-12 12:25:36 · 267 阅读 · 0 评论 -
参数数组-C#
如果有一天,我需要写一个方法,但是方法的参数会根据需求随时变化,我该怎么办?这时候就要用到参数数组params,而不是傻傻的再写一个符合需求的方法.using System;namespace CSharplearn { class Program { static void Main(string[] args) { int[] Numbers = { 1, 2, 3, 4, 5, 6 }; int原创 2020-05-12 09:17:33 · 130 阅读 · 0 评论 -
ref与out-C#
refusing System;namespace CSharplearn { class Program { static void Main(string[] args) { int a = 1; int b = AddNum(a); Console.WriteLine(b); } public static int AddNum(int a)原创 2020-05-11 23:36:48 · 100 阅读 · 0 评论 -
条件操作符,空合并操作符和空条件操作符-C#
条件操作符条件操作符是** ?: **用法是a?b:ca为一个判断或者布尔值,当a为true时,返回b,否则返回c.这段代码等价于(假设有个变量d来接收条件操作符返回的值,也就是d=a?b:c)if (a == true){ d = b;}else { d = c;}在使用?:的时候b和c类型要相同,比如b是int,c也得是int.使用?:的好处就是能简写上面一大串代码.空合并操作符空合并操作符是** ?? **用法是a??b如果a不为null,则返回a,否原创 2020-05-11 18:49:00 · 506 阅读 · 0 评论 -
浮点数的运算与比较-C#
using System;namespace CSharplearn{ class Program { static void Main(string[] args) { decimal decimalNum = 1.6M; double doubleNum1 = 0.1F * 16F; double doubleNum2 = 0.1D * 16D; flo原创 2020-05-11 17:34:41 · 1320 阅读 · 0 评论 -
var-C#
第一种用法var a = 1;var b = "string";var c = System.Console.ReadLine();使用var来声明隐式类型的局部变量,要注意必须在声明时就赋值.在使用var之后,编译器会根据初始化时赋的值来推断变量类型.比如我var d = method();method()里面俄罗斯套娃套了n个方法,一时半会想不起来到底该怎么声明变量,这时候使用var可以轻松解决问题.第二种用法var的真正目的是用来支持匿名类型var test = new{原创 2020-05-11 12:01:40 · 322 阅读 · 0 评论 -
属性-C#
一篇写的比较好的简书文章:https://www.jianshu.com/p/00bea9f0209a转载 2020-05-08 00:15:41 · 126 阅读 · 0 评论 -
this与base关键字-C#
this关键字现在要求你编写一个程序,在一个"计算器"类里,设定一个int字段并赋值2.再写一个方法,带有一个int参数,返回这个参数和int字段相乘的值,并且要求参数名与字段名相同.然后就写出这样一个程序你可能也会诧异,这什么跟什么,到底是什么number乘什么number?然后我们就可以正式介绍this关键字.在return number*number;的第一个number前面加上t...原创 2020-05-07 22:38:03 · 258 阅读 · 0 评论 -
public,static修饰符与创建实例-C#
public修饰符using System;using System.Collections.Generic;using System.Text;namespace CSharplearn{ class 被输出对象 { public string a; } class Program { stat...原创 2020-05-07 10:39:24 · 1380 阅读 · 0 评论 -
帮助理解面向对象
首先附上一个我觉得写的不错的知乎文章:https://zhuanlan.zhihu.com/p/92362781面向对象是一个编程思想,或者说是编程理念。并不是谁给了一串balabala的代码,然后我和你说噢这个是面向对象。所以到底怎么去细致理解这个概念?来看代码.using System;using System.Collections.Generic;using System.Te...原创 2020-05-06 22:59:29 · 114 阅读 · 0 评论