zoukankan
html css js c++ java
C# 3.0/3.5语法新特性示例汇总[转]
//
作者:杨卫国
//
时间:2008年2月21日
//
说明:C#语法新特型示例
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
namespace
C3
{
class
Program
{
//
新特性1:简单属性,无需另外多写一个私有字段,比较适合于定义实体类
public
class
GsunisMan
{
//
传统写法,属性必须有一个私有字段
private
int
age;
public
int
Age
{
get
{
return
age;
}
set
{
age
=
value;
}
}
//
3.5写法,直接定义即可;
public
string
Name
{
get
;
set
; }
public
Int64 ID
{
get
;
private
set
; }
}
static
void
Main(
string
[] args)
{
//
新特性2:隐式类型,隐式类型化本地变量,但必须赋初值,编译器通过初值推导出变量类型
var i
=
10
;
//
相当于 int i=10;
var s
=
"
甘肃紫光软件研发部
"
;
//
s为String类型;
var arrNums
=
new
int
[]
{
3
,
6
,
9
}
;
//
新特性3:初始化数组的简写方式:new[],可以回忆一下1.1、2.0怎么定义?
int
[] arrNums2
=
new
[]
{
1
,
2
,
43
}
;
//
当然也可以写成:var arrNums2 = new[] { 1, 2, 43 };
/**/
/**/
/**/
///
新特性4:匿名类型,在2.0中有个匿名方法,很容易混淆
var book1
=
new
{ BookName
=
"
《紫光人2007纪念版》
"
, BookNumber
=
150
,BookPublisher
=
"
甘肃紫光企划部
"
}
;
MessageBox.Show(
string
.Format(
"
书名:{0},数量:{1},出版:{2}
"
,book1.BookName , book1.BookNumber , book1.BookPublisher));
/**/
/**/
/**/
///
新特性5:对象构造者(实例化时,构造函数后面跟大括号,可直接初始化对象属性),在1.1、2.0中必须先定义,然后初始化
GsunisMan aMan
=
new
GsunisMan()
{Name
=
"
杨卫国
"
, Age
=
100
}
;
MessageBox.Show(
string
.Format(
"
编号:{0},姓名:{1},年龄:{2}
"
, aMan.ID,aMan.Name,aMan.Age));
/**/
/**/
/**/
///
新特性6:集合构造者特性。允许List
<>
等自定义集合像数组一样用大括号赋初值,在以前只有数组才可以的
List
<
int
>
listNums
=
new
List
<
int
>
()
{
1
,
3
,
54
,
6
,
78
}
;
MessageBox.Show(listNums.Count.ToString());
//
新特性7.2,请首先看看下面的新特性7.1;
string
str
=
"
123
"
;
bool
isNum
=
str.IsAllNumber();
MessageBox.Show(isNum.ToString());
//
新特性8:Linq,作用就不多说了,用法太多,自己找资料看;
//
从一个集合中找出所有年龄大于55岁的人;
List
<
GsunisMan
>
men
=
new
List
<
GsunisMan
>
();
men.Add(
new
GsunisMan
{Name
=
"
刘备
"
,Age
=
65
}
);
men.Add(
new
GsunisMan
{ Name
=
"
关羽
"
, Age
=
60
}
);
men.Add(
new
GsunisMan
{ Name
=
"
张飞
"
, Age
=
50
}
);
var man
=
from m
in
men
where
m.Age
>
55
select m;
//
使用Linq,前面几行在准备数据,感觉有些像Sql语句,呵呵
MessageBox.Show(man.First
<
GsunisMan
>
().Name);
//
在此仅显示第一个人姓名
//
新特性9:Lambda表达式"=>",一个简单的例子,用法太多,自己找资料看;
int
[] numbers
=
{
5
,
4
,
1
,
3
,
9
,
8
,
6
,
7
,
2
,
0
}
;
int
oddNumbers
=
numbers.Count(n
=>
n
%
2
==
1
);
//
找出奇数的个数
MessageBox.Show(oddNumbers.ToString());
}
}
static
public
class
ExpandClass
{
//
新特性7.1:扩展方法。可在类的外部扩展已有的类,如下是扩展string类,为String类增加一个IsAllNumber方法
//
!!!此特性在.NET 2.0下不可用!!!
public
static
bool
IsAllNumber(
this
string
str)
{
foreach
(var ch
in
str)
{
if
(
!
char
.IsNumber(ch))
{
return
false
;
}
}
return
true
;
}
}
}
查看全文
相关阅读:
EF生成的SQL语句执行顺序问题。
关于scope_identity()与 @@IDENTITY
按条件设置gridcontrol 单元格属性
DevExpress gridcontrol Master-Detail绑定到对象类型
dev ChartControl 备忘
gridcontrol 图片列异步加载
关于EmitMapper,映射配置
asp.net Hessian 服务的注册
XtrasReport 标签打印
Devexpress + wcf +ef 批量更新处理
原文地址:https://www.cnblogs.com/craig/p/1455651.html
最新文章
常用脚本--生成Agent Job的创建脚本
常用脚本--归档ERRORLOG
疑难杂症--由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
常用脚本--生成指定表的INSERT 语句
执行计划--Adhoc和Prepare
java依赖的外部文件路径的获取
oozie中使用sqoop导入hive表时提示hive找不到
kafkaStream解析json出错导致程序中断的解决方法
KafkaStream时间戳问题CreateTime = -1引起的程序中断
flume采集启动报错,权限不够
热门文章
(转)kafka发布消息报错LEADER_NOT_AVAILABLE
测试markdown编辑器
KafkaStream实现wordcount
java执行jar包
集群同步hive的脚本
android 蓝牙通讯编程 备忘
C#与android连接 SimpleWifi
arduino uno r3 + SIM900 + USB打火机 实现电话触发点火
SIM900 AT来电显示开启,一些代码
arduino一些内容
Copyright © 2011-2022 走看看