C# 4.0的一些新特性 本帖最后由 ojlovecd 于 2010-04-24 23:46:08 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看了一下LZ的介绍,收获不少呀,dynamic暂时没有想到具体的情况,一定用他才能解决。不过可选参数以及命名参数真的挺有用。向LZ学习了! C#向N多语言借鉴了经验,希望越来越强大,越来越方便。感谢lz分享,学习了。 接分,补充下:C# 4.0 支持更高级的Lambda表达式。 我忘了介绍了,配合System.Dynamic命名空间下的ExpandoObject类,实现动态语言编程真是太方便了,举个例子: dynamic obj = new ExpandoObject(); obj.Name = "ojlovecd"; obj.Age = 26; obj.ShowInfo = new Action<dynamic>(dyn => { Console.WriteLine("Name:{0},Age:{1}", dyn.Name, dyn.Age); }); obj.ShowInfo(obj); 不懂.Net为什么不用variant作为关键字?还是说variant已经是关键字了?dynamic是从哪里学来的? 从C#3.0开始就已经有var关键字了 variant 不是 var也可能是怕混淆? 是的,我刚开始用的时候也吃了一惊,一开始我以为只能生成动态属性,没想到连方法都可以动态生成。C#3.0的linq+lambda就已经够强大了,再加上4.0的dynamic,C#已经可以像javascript般使用了 其实没什么可以吃惊的,不过就是把反射的语法简化了。另外 var 不是 VB 和 COM 里面那种 variant。其实 var 还是确定的类型,不过是交给编译器自动推定了而已。如同匿名类、匿名方法也并非真的没有名字,而是编译器自动去识别了。 1.xButton btn=new Button();btn.OnClick+=new EventHandler(btn_Click);private void btn_Click(object sender,EventArgs e){}2.0Button btn=new Button();btn.OnClick+=delegate(object sender,EventArgs e){};3.0Button btn=new Button();btn.OnClick+=(sender,e)=>{}; 我们这次参加的esri竞赛,老师就要我们用C#4.0开发~看来还是不错的。LZ介绍很好,学习了不少 关于命名参数的问题: static void Main(string[] args) { TestMethod(s: "hello");//这里必须写s吗?可不可以随便写个名字? } static void TestMethod(int i = 10, string s = "ojlovecd") { Console.WriteLine("i:{0},s:{1}", i, s); } ps:msdn我还没看 第三点 参数命名TestMethod(s: "hello");只要调入一个参数 static void TestMethod(int i = 10, string s = "ojlovecd") { Console.WriteLine("i:{0},s:{1}", i, s); } 这里却有2个参数,怎么调入呢。 这个与它传入参数的顺序可以随意有什么关系呢 1.这里与传入的参数顺序没应该没关系吧,这就是4.0特性;2.TestMethod(s: "hello");表示第一个参数没传入,是因为默认定义了int i=103.TestMethod(s: "hello");中的s与static void TestMethod(int i = 10, string s = "ojlovecd")中string s="";是对应的; 求助C#打印 怎样用C#代码把网页中的{readonline}和{subtag:name}替换掉 C#winform的Resources文件夹怎么用 水晶报表预览如何加入背景? 怎样设置一个窗口的快捷键 窗体设置问题! .Net Framewrok中是否本身有排序的函数可供使用? table删除数据行,怎么做? 关于多线程同步事件处理内在逻辑的探究 asp.net访问oracle的问题 在Server端从提取数据后直接插入数据库插不进去 c# 多表查询,并写入到另一个表中
感谢lz分享,学习了。
obj.Name = "ojlovecd";
obj.Age = 26;
obj.ShowInfo = new Action<dynamic>(dyn => { Console.WriteLine("Name:{0},Age:{1}", dyn.Name, dyn.Age); });
obj.ShowInfo(obj);
C#3.0的linq+lambda就已经够强大了,再加上4.0的dynamic,C#已经可以像javascript般使用了
Button btn=new Button();
btn.OnClick+=new EventHandler(btn_Click);private void btn_Click(object sender,EventArgs e)
{
}2.0
Button btn=new Button();
btn.OnClick+=delegate(object sender,EventArgs e){};3.0
Button btn=new Button();
btn.OnClick+=(sender,e)=>{};
看来还是不错的。
LZ介绍很好,学习了不少
static void Main(string[] args)
{
TestMethod(s: "hello");//这里必须写s吗?可不可以随便写个名字?
}
static void TestMethod(int i = 10, string s = "ojlovecd")
{
Console.WriteLine("i:{0},s:{1}", i, s);
}
ps:msdn我还没看
TestMethod(s: "hello");只要调入一个参数 static void TestMethod(int i = 10, string s = "ojlovecd")
{
Console.WriteLine("i:{0},s:{1}", i, s);
}
这里却有2个参数,怎么调入呢。
这个与它传入参数的顺序可以随意有什么关系呢
2.TestMethod(s: "hello");表示第一个参数没传入,是因为默认定义了int i=10
3.TestMethod(s: "hello");中的s与static void TestMethod(int i = 10, string s = "ojlovecd")中string s="";是对应的;