C#基础

.NET框架的组成

执行环境(CLR):
内存管理和垃圾回收
代码安全验证
代码执行,线程管理及异常处理
编程工具:
集成开发环境(IDE)
.NET兼容的编译器
调试器
网站开发服务器端技术(ASP.NET或WCF)
基类库(BCL,框架类库FCL的子集):是.NET框架使用的一个大的类库
(java是平台无关性+语言无关性,.NET框架是语言无关性)

概述

标识符

规范:
字母和下划线
数字不能放在首位
@字符只能放在标识符的首位,不推荐将@作为常用字符
关键字不能被用作变量名或其他任何形式的标识符,除非以@字符开始
所有c#关键字全部由小写字母组成(但是.NET类型名使用Pascal大小写约定)

格式字符串

{索引,[字宽]:[格式说明符|精度说明符]} []为可选
Console.WtireLine("|{0,10}|",500);// 输出|         500|
Console.WtireLine("|{0,-10}|",500);//输出|500         |

注释

// 单行注释
/* */多行注释
/// 文档注释

类型,存储和变量

预定义类型

16种预定义类型:
13种简单类型:
byte
sbyte
short
unshort
int
uint
long
ulong
decimal
floot
double
bool
char
3种非简单类型:
string:Unicode字符数组
object:所有其他类型的基类
dynamic:使用动态语言编写的程序集时使用

用户定义类型

6种用户定义类型
类类型(class)
结构类型(struct)
数组类型(array)
枚举类型(enum)
委托类型(delegate)
接口类型(interface)

栈和堆

栈:
栈是一个内存数组,是一个LIFO(后进先出)的数据结构
栈存储中类型的数据:某些类型变量的值;程序当前的执行环境;传递给方法的参数
栈的几个普遍特征:数据只能从栈的顶端插入和删除;把数据放到栈顶称为入栈(push);从栈顶删除数据称为出栈(pop)
堆:
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象.与栈不同,堆里的内存能够以任意顺序存入和移除,CLR的自动GC在判断出程序的代码将不会再访问某数据项时,会自动清除无主的堆对象,因此不能显式的去删除堆中的数据

值类型和引 用类型

值类型只需要一段单独的内存,用于存储实际的数据
引用类型需要两段内存,第一段存储实际的数据,它总是位于堆中,第二段是一个引用,指向数据在堆中的存放位置
对于引用类型的任何对象,它所有的数据成员都存放在堆中,无论他们是值类型还是引用类型

数据结构

数据成员:它存储与类或类的实例相关的数据,数据成员通常模拟该类所表示的现实世界事物的特性
函数成员:它执行代码,通常会模拟类所表示的现实世界事物的功能和操作

访问修饰符

private(私有的):在类的内部才可以访问
public(公共的):完全公开,没有访问限制
protected(受保护的):该类内部和继承类可以使用
internal(内部的):同一命名空间内可以使用
protected internal(受保护内部的):同一程序集内可以使用

方法

栈帧

在调用方法的时候,内存从栈的顶部开始分配,保存和方法关联的一些数据项.这块内存叫做方法的栈帧.
栈帧包含的内存保存内容:
返回地址,也就是在方法退出的时候继续执行的位置
这些参数分配的内存,也就是方法的值参数,或者还可能是参数数组
各种和方法调用相关的其他管理数据项
在方法调用时,整个栈帧都会压入栈
在方法退出的时候,整个栈帧都会从栈上弹起,弹出栈帧有时候也叫作栈展开

Lambda表达式

//FirstOrDefault返回第一个符合条件的数据,不存在的时候返回Null。 
var a = studentList.FirstOrDefault(t => t.StudentCode == "10012");
//返回符合条件的实体个数
var b = studentList.Count(t => t.StudentName == "李世民");
//查找所有名字中含有【中】的实体集合
var c = studentList.FindAll(t => t.StudentName.Contains("中"));
//对studentList按照ClassCode分组
var d = studentList.GroupBy(t => t.ClassCode);
//返回最大的出生日期。
var f = studentList.Max(t => t.BirthDay);
//对所有成绩求和
var e = scoreList.Sum(t => t.ScoreValue);
//对所有成绩求平均分
var g = scoreList.Average(t => t.ScoreValue);
//获取所有的学生姓名,并去除重名
var h = studentList.Select(t => t.StudentName).Distinct();

本文系作者 @ 原创发布在 IT梦。未经许可,禁止转载。

喜欢()
0 0 投票数
Article Rating
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
热门搜索
31 文章
13 评论
83 喜欢
Top
0
希望看到您的想法,请您发表评论x