1)关于static方法的应用
1 若该方法中没有用到非static字段,和属性的方法,可定义为static方法。
2)关于扩展方法
1 就是类本没有此方法,就好像有一样。
2 首先将类变为static,然后在static方法中的参数加this,且this必须是要扩展的类的类型。
public static bool IsEmail(this string s){return s.contains('@');}
// if(s.IsEamil().ToHZ()) 要点就是让参数作为对象,去调用该方法得到返回值的类型。
3)关于Linq
1 c#中 var是一个类型的简写,是根据右边进行类型的确定,此后不能再修改,因为编译器会自动帮我们将var进行类型转换,于JS中的var类型不同。
2 匿名类型:var p =new{Age=9,Name="kk"}; 声明匿名类型的两个属性;并且创建匿名类型的一个对象,然后为该对象的各个属性赋值。
3 所以var就是为匿名类型而生。
4 成员一致的匿名类型会重用。
5 Linq实现:过滤掉负数(where),把数组排序(order by),然后元素两边加[]输出。
var ij=item.Where(i=>i>0).OrderBy(i=>i).Select(i=>"["+i+"]");//这样扩展方法,var类型全部用上
---或者
var ij = from i in item
where i > 0 //过滤
orderby i descending //排序
select "["+i+"]"; //输出,设置输出匿名类型也可以 select new { age=4};
6 从字符串数组中将长度小于5的元素返回
var s = from item in str
where item.Length < 5 //过滤
select item;
7 Dictionary中年龄大于20的人的姓名用“,”分割打印出来
var s = from item in dic
where item.Value > 20 //值过滤
select item.Key; //键选取
Console.WriteLine(string.Join(",",s)); //分隔
8 年龄大于20的人依次输出到含有Name、Age属性的匿名类型的序列中;
var s = from item in dic
where item.Value > 20
select new { name=item.Key,age=item.Value}; //返回匿名类型;
foreach (var str in s)
{
Console.WriteLine(str.age);
}
9 其中年龄大于20的人输出到含有Name、Age属性的预定义类型Person的序列中;
var s = from item in dic
where item.Value > 20
select new Person{ name=item.Key,age=item.Value}; //返回Person对象; f
oreach (Person p in s)
{
Console.WriteLine(p.age);
}
10 取出数组中出现次数最多的三个数
var result = from item in values //每一项
group item by item into gro //按项分组,没组就是gro
orderby gro.Count() descending //按照每组的数量进行排序
select new { num = gro.Key, nums = gro.Count() }; //返回匿名类型对象,输出这个组的值和这个值出现的次数
foreach (var item in result.Take(3))
{
Console.WriteLine("数字{0}出现了{1}次",item.num,item.nums);
}
11 Linq常用的扩展方法
1 Average();Sum();Concat(); Contains(); Distinct(); Except(); Intersect(); Single();
2 Linq只能用于泛型序列。IEnumerable<T>;
3 Single() ;可用它来限定序列中仅有一个数据。
12 如何将非泛型转为泛型序列
1 dt.Rows.Cast<DataRow>();
2 object[] values={}; values.Cast<int>.Max();
3 values.OfType<string>(); 是挑选符合类型的进行转换,不会报错;
4)关于正则表达式( 匹配和提取 和替换)
1 表示字符类型使用--- . [] [^]
2 表示分组使用--- () |
3 表示出现次数使用--- * + ? {n} {n,} {n,m}
4 表示开始和结束--- ^ $
5 \d \s \w
6 IsMatch用来判断一个字符串是否匹配正则表达式; Regex.IsMatch('str','regex'); 返回bool;
7 注意,若不想让符号表示元字符,那么需要转义; 例如就想表示点;那么用 @"\.”;或者"\\."
8 正则表达式的提取:Match mat=Regex.Match("str","^(.+)=(.+)$") ; if(mat.success){ mat.Groups[1].Value; }
9 贪婪模式(.+)。;非贪婪模式(.+?)。让它不再贪婪,匹配第一个就可以了;
10 Regex.Match() ;获得匹配的第一个
Regex.Matches();获得所有的匹配项
foreach( Match mat in matches){ match.Value; } //获得指定表达式的值
{ match.Groups[1].value} //获得表达式中的组;
11 替换: Regex.Replace(str,"将什么reg","替换为什么");
12 对匹配的分组进行替换工作;
string s1=Regex.Replce(s,@"(\w+)=(\w+)","$2是$1") ;先对分组的结果进行操作,再进行替换。

浙公网安备 33010602011771号