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
;
}
}
}
查看全文
相关阅读:
【CFD之道】2018年原创文章汇总
【OpenFOAM案例】03 Docker安装OpenFOAM
【OpenFOAM案例】02 自己动手
【OpenFOAM案例】01 elbow
Fluent动网格【13】:网格光顺总结及实例
Fluent动网格【12】:扩散光顺
Fluent动网格【10】:区域运动案例
Fluent动网格【11】:弹簧光顺
happyChat开发系列:使用websocket.io实现双向通信的乐聊大前端开发
vue,vuex的后台管理项目架子structure-admin,后端服务nodejs
原文地址:https://www.cnblogs.com/craig/p/1455651.html
最新文章
android r.styleable是什么或报错
android 获取IMSI信息(判断是移动,联通,电信手机卡)
android px转换为dip/dp
android 利用Handler触发另一个activity方法
android 获取网络类型名称2G 3G 4G wifi
android 闪屏还是会出现黑屏问题
android OnTouchListener 按下与抬起
使用EditText的addTextChangedListener(new TextWatcher())方法
说明
同步pypi源
热门文章
nvidia[GPU架构发展对比]
Automl基于超大数据下的数据分发方案探讨
混合编程[python+cpp+cuda]
TensorRT&Sample&Python[yolov3_onnx]
TensorRT&Sample&Python[uff_custom_plugin]
TensorRT&Sample&Python[fc_plugin_caffe_mnist]
TensorRT&Sample&Python[network_api_pytorch_mnist]
TensorRT&Sample&Python[end_to_end_tensorflow_mnist]
【CFD之道】2019年原创文章汇总
【CFD之道】2017年原创文章汇总
Copyright © 2011-2022 走看看