首先声明,我是菜鸟,以下观点纯属个人意见。
当我从C++开始转到C#的时候,刚开始的时候觉得C#的语法真好,终于不用在被C++那种恶心的语法这折磨了,虽然为了他的这点语法的漂亮我不得不放弃内存的控制还有效率等等的牺牲。但是我个人喜欢那种不仅仅功能强大,但是外表也同样好看的东西, 可使用了一段时间,发现C#的语法也是很垃圾,与法作为一种规范,应该有些定义的规则,而不是随便定义就可以了首先看数组
   int[] myTest; //这个是声明语法
可以把int[]看作一种类型(呵呵,这杨子看待对初学者很有帮助,或者说对我这个菜鸟很有帮助)。一个类型的构造函数应该和这种类型的名称相对应。如果我们能够定义数组的语法,他的样子我想应该是
   int[](){……};  或者是 int[]( 参数 ){……};// 构造函数语法
   那么相对应的实例化的语法应该是
   int[] myTest = new int[数组的大小]();  //比较舒服的看法 但是编译好像是不通过   
   但是实际上却不是这个样子了  变成了这个样子
   int[] myTest = new int[数组的大小];   // 那个()不见了 要知道()一般就是表示一个函数被调用了
   不要告诉我这个是为了照顾有C或者是C++使用经历的人,C#是一门新的语法,完全可以抛开以前不好的语法规则。即使像照顾那些人,那么这些地方做成两种方式都可以得就可以了,记得C++中好多的规则都是可以用不同的语法表示的。等到2.0了  更让我受不了了  
   泛型的声明
   class Stack<T>
   {
       …………
   }
   把Stack<T>看作一种特殊的类型
   那么它的声明和使用应该如下     
   Stack<int> myStack = new Stack<T>();  // 这个条用构造函数的语法很舒服
   可是到了类型的构造函数的声明!!!!!
   class Stack<T>
   {
       public Stack()                   //  正确的 但是很ugly的语法 这个地方的<T>呢?  
       {
           …………                    
       }
   }
---------------------------------------------------------------------------
   class Stack<T>
   {
       public Stack<T>()                //  错误的 但是很合乎情理的语法 
       {
           …………                    
       }
   }
   *****************************************************************************************
曾几何时论坛上C++的板块中最牛的就几乎都是一个人在那里卖弄C++那ugly的语法,又有多少C++的初学者被那些复杂的语法规则所吓倒而不再去学习C++。(我有C++primer 和 C#primer两本书  前者的厚度是1028 后者仅仅有几百页 我想也就是C++那种该死的语法才能有这么厚的语法书 放到现在任何一门语言 都不该用那么该死的语法)。MS做的东西一项以好用著称。难道MS忍心看到数年之后论坛上再出现一股C#的语法卖弄风波么??C#3.0好像是网上已经出来了,不知道会不会使更复杂  当然这仅仅是我一个菜鸟的看法,语法作者这么做绝对有他的理由,可是我认为我们是他的客户,他做的东西应该是符合客户的要求而不是符合他自己的习惯。有什么不对的地方希望多多指点。精彩的给分。  顺便提一下C#3.0  好像是类似于把orm嵌到了C#3.0中的语法中,个人感觉这个东西做成框架或者是类库,做成语法未免太……  C#2.0的关键字已经够多了的  到时候我们给自己的变量取名字都不好取了。-------------声明:本人对C#3.0完全没有研究,以上看法可能有误
   

解决方案 »

  1.   

    语法应该能兼容上一代的规范,就象正规表达式一样,虽然看起来复杂,其实它能完全遵循规范.
    参数是包含在()里的.这点是肯定的.<>只是对类的一种修饰,在构造函数中当然不能将实际的参数放在<>里了,仍需要放在()里,这才能够符合规范.C#的语法结构要求是严格和规范,即使int类型也并是说能够直接和string类型直接转换,这就能够让程序更好的控制程序的具体实现方法.也就是能提供更高的效率.
    C#的语法结构是从C++转换而来的,那么就自然有很多相似的地方.int[] 声明 = new int[数组的大小]{...}这点也是C++的语法结构.这很正常.一个语法的发展是不能脱离上一代语言规范的,除非它是新的一门语言,如果它没一次升级都不符合原来的规范,可想而知上次写的代码基本上没可能在这次升级上使用,就如同vb->vb.net全新的语言类型一样.
    C#是继承了C++花悄的特征,这点却是肯定的,如同i++,i=+1;i+=1;i=i+1;虽然结果相同,可编码却不相同,有时实现一些花悄是为了实现更高的效率,即使是微不足道的千分之一.C#的泛型是为了这个目标而产生的,否则object不是更简单?C#正在走向C++的高效率,提供的是编译级的改变,而不是通过简单的代码优化所能达到的.
      

  2.   

    确实不完美。。没办法。我们可以做自己的.net语言,呵呵,编译成IL比机器码方便许多。我觉得类应该这样申明:+ AClass{//public
    }- BClass{//private
    }# CClass{//protect
    }这样才称得上 C#吗,哈哈。多方便,,函数都不需要 function func(){}..类为什么就要 class cls{}    ?!