写在前面:
大学的c#选修课没有讲语法课,直接asp.net 之类的,我觉得不太好。所以我最近在看这本书,深入学习。
在博文我会放一些书中的代码和对于我来说没见过或者很生疏的东西。
就当是批注之类的。
------------------------------------------------------
第一章
1.Readonly(c#4)
例子:
using System.Collection.Generic;
public class Project{
readonly string name; //外界不可以设置name值
public string Name{get{return name;}
}
}
知识点:
readonly ->const 对象构造函数运行完后,readonly修饰的值就不能再更改
const | readonly |
1.static类型,类访问 | 对象访问 |
2.声明初始化 | 构造函数里初始化 |
3.只能在声明时,赋值一次 | 在构造时可以赋值多次 |
4.类中可以当局部变量 | 不可以 |
5.适用于类似于int之类的变量类型 | 可以适用复杂类型datetime |
2.lambda
例子:
(1)list<T> 按照T里面的某个元素进行排序输出 c#3
List<Project>products=Product.GetSampleProducts();
foreach (Product product in Products.OrderBy(p=>p.name))//存在一个拓展方法
{
}
(2)查询 价格高于10 c#3
List<Project>products=Product.GetSampleProducts();
foreach (Product product in Products.Where(p=>p.price>10))//存在一个拓展方法
{
}
(3)查询未知的值
List<Project>products=Product.GetSampleProducts();
foreach (Product product in Products.Where(p=>p.price==null))//存在一个拓展方法
{
}
知识点:
https://baike.baidu.com/item/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F
=> 叫做 goes to
似乎跟委托函数有关,委托函数还没学过(……),后面会仔细讲委托函数的,
先总结一些方法
列表.orderby(p=>p.类中变量) 按照类中的变量排序的列表
对象 .where(p=>关于类中变量的bool关系式) 符合关系式元素组成的列表
*注意不能直接用,作者说会在第十章讲
--------------------------------------------------------------------------------------------------------------------------
3.linq
知识点:
总结:
1.初始化
var query = from item
in
列表/集合 //var 没有指定类型,query是一个集合
join value in 列表2
on item.id equals value.id
where
条件
group
item
by
item.Length into lengthGroups //按照属性分类
orderby
lengthGroups.Key //排序
select
lengthGroups; //一个集合
2.应用
foreach (var thing in query)
{
}
-----------------------------------------------------------------------------------------------
4.com
用com技术导入excel
var app=new Application{Visible=false;} //创建新的应用
Workbook workbook=app.Workbook.Add(); //增加新的工作簿
Worksheet worksheet=app.ActiveSheet;//新的表格
int row=1;
foreach(var product in products)
{
worksheet.cell[row,1].Value=product.name;
worksheet.cell[row,2].Value=product.price;
row++;
} //录入名字和价格
workbook.SaveAs(Filename:" .xls",FileFormat:XlFileFormat.xlWorkboolNormal);//存取
app.Application.Quit();