本帖最后由 ojlovecd 于 2010-04-24 23:46:08 编辑

解决方案 »

  1.   

    看了一下LZ的介绍,收获不少呀,dynamic暂时没有想到具体的情况,一定用他才能解决。不过可选参数以及命名参数真的挺有用。向LZ学习了!
      

  2.   

    C#向N多语言借鉴了经验,希望越来越强大,越来越方便。
    感谢lz分享,学习了。
      

  3.   

    接分,补充下:C# 4.0 支持更高级的Lambda表达式。
      

  4.   

    我忘了介绍了,配合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);
      

  5.   

    不懂.Net为什么不用variant作为关键字?还是说variant已经是关键字了?dynamic是从哪里学来的?
      

  6.   

    从C#3.0开始就已经有var关键字了
      

  7.   

    variant 不是 var也可能是怕混淆?
      

  8.   

    是的,我刚开始用的时候也吃了一惊,一开始我以为只能生成动态属性,没想到连方法都可以动态生成。
    C#3.0的linq+lambda就已经够强大了,再加上4.0的dynamic,C#已经可以像javascript般使用了
      

  9.   

    其实没什么可以吃惊的,不过就是把反射的语法简化了。另外 var 不是 VB 和 COM 里面那种 variant。其实 var 还是确定的类型,不过是交给编译器自动推定了而已。如同匿名类、匿名方法也并非真的没有名字,而是编译器自动去识别了。
      

  10.   

    1.x
    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)=>{};
      

  11.   

    我们这次参加的esri竞赛,老师就要我们用C#4.0开发~
    看来还是不错的。
    LZ介绍很好,学习了不少
      

  12.   

    关于命名参数的问题:
     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我还没看
      

  13.   

    第三点 参数命名
    TestMethod(s: "hello");只要调入一个参数 static void TestMethod(int i = 10, string s = "ojlovecd")
            {
                Console.WriteLine("i:{0},s:{1}", i, s);
            }
     这里却有2个参数,怎么调入呢。   
    这个与它传入参数的顺序可以随意有什么关系呢
      

  14.   

    1.这里与传入的参数顺序没应该没关系吧,这就是4.0特性;
    2.TestMethod(s: "hello");表示第一个参数没传入,是因为默认定义了int i=10
    3.TestMethod(s: "hello");中的s与static void TestMethod(int i = 10, string s = "ojlovecd")中string s="";是对应的;