`
javasee
  • 浏览: 960614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

西行漫记(16):C#长得太丑了

阅读更多
几天程序写下来,觉得这C#实在是丑到不能行……这几天一直在战的一个事情,譬如说我把一个接口变成抽象类,好家伙,先得把所有的方法前面加上abstract,然后所有子类的实现方法加上override,一通好改……更可气的是我这个步骤是为了把它分成两个接口,等到分完了抽象类一删除,又得把所有子类上的实现方法去掉override,又是一通好改……这家伙要是搁项目里有十几二十个子类,那工作量是相当大亚~~~~所以还是一开始就考虑清楚,到底要抽象类还是要接口……都是C#给逼得。

这还不算哪,没过一会给我整出个protected internal来,唬得我是一愣一愣的,这算哪门子的事呢?protected而又internal,这清晰是够清晰了,纯然不顾我的感受亚。匿名内部类也没有,每个visitor我都得正经八百的创建一个类,明知道这个类下八辈子也不会有人用它第二次。得亏还有delegate哟~~~然则这1.1里delegate的语法也忒丑了,好家在2.0还有改进……1.1就不用数落它了,没有泛型亚……

其实不光光是C#了……每回看着一个class想要mixin可就是mix不in的时候,都觉得粉郁闷,annotation写几个metadata还非得在容器里才有机会解释。没有delegate的Java,functor前后为匿名内部类写出5行代码,functionality就一行。有了delegate的C#也好不到哪儿去,delegate倒是挺像closure的,然则这context不对呀……用三种不同的high order实现同一个功能,结论是哪个都不好看,跟堆一堆对象也差不多。虽说对象不那么容易重用,可就那语法估计也没谁愿意重用那些functor。

别的就啥也不说了……其实要多态,还不如在对象里面保存一个变量,变量里面是一段程序,运行到那就把这段程序拿出来eval一下,不比创建几个子类强么……

(不是要挑起语言大战……写C#写得郁闷了,稍微发泄一下……莫要当真,莫要当真。)
分享到:
评论

相关推荐

    C#基础教程C# C# C# C#

    【C#基础教程C# C# C# C#】是一份专门为C#编程语言初学者设计的详尽教程。C#(读作“C Sharp”)是微软公司于2000年推出的一种面向对象的、类型安全的、现代的编程语言,主要用于构建Windows平台的应用程序、Web应用...

    源码:C#操作CSV,C#读取CSV

    在C#编程中,CSV(Comma Separated Values)文件是一种常见的数据存储格式,用于交换数据,特别是表格数据。CSV文件以纯文本形式存储,每一行代表一条记录,记录之间用换行符分隔,而记录内的每个字段则用逗号作为...

    数据结构与算法:C#语言描述(中,英文 完全版)

    此资源吐血推荐 面向C#语言 介绍程序设计数据结构和算法!共分17章!数据结构与算法的学习对于进行软件开发的专业程序员而言是非常关键的。虽然有许许多多关于数据结构与算法的书籍,但是这些书籍通常都是大学教材,...

    C#学习路线图:C#必须知道的300个问题 高清版[带完整书签]

    本书内容包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、c撑面向...

    一个 C# 做的日记本

    “代码较多,没什么难度”表明虽然这个程序可能包含了大量的源代码行,但由于使用了C#这种高级语言和可能的一些内置库或框架,整体开发难度相对较低,适合初学者或者有一定C#基础的开发者学习和参考。 【标签】"C# ...

    Visual Studio 2005(1):C#语法篇(下).zip

    【标题】"Visual Studio 2005(1):C#语法篇(下).zip",这个压缩包是Visual Studio 2005系列教程的一部分,主要关注C#编程语言的语法。作为"下"篇,我们可以推断它可能在上一节的基础上深入讲解了C#的一些高级或复杂...

    CRC16校验C#版源码

    在C#环境中实现CRC16校验,可以帮助开发者在.NET框架下构建可靠的通信协议,例如在Modbus协议中,CRC16常被用于验证报文的正确性。 在C#中实现CRC16,通常涉及以下步骤: 1. **定义CRC16多项式**:CRC16算法的核心...

    LogHelper C#日志记录

    "LogHelper C#日志记录" 是一个专为C#开发人员设计的日志记录工具,其核心功能是实现多文件记录,并根据日期和时间进行智能分割。 C#是一种广泛使用的面向对象的编程语言,尤其在Windows应用程序和Web服务开发中...

    c#全面经典总结

    C#是一种广泛应用于软件开发,尤其是Windows平台和.NET框架中的高级编程语言,由微软公司于2000年推出。它的设计目标是提供一种类型安全、面向对象的编程语言,支持现代软件工程的需求,包括网络分布式应用和组件...

    编程乐趣:C#实现查询12306票价信息

    在本文中,我们将深入探讨如何使用C#编程语言来实现查询12306网站上的火车票价信息。12306是中国铁路客户服务中心的官方网站,提供了火车票的查询、预订等一系列服务。通过C#与12306接口进行交互,我们可以构建一个...

    C#编程思想(Thinking in C#)

    《C#编程思想》是一本深入探讨C#编程语言的经典著作,旨在帮助读者理解C#的核心概念、设计哲学以及在实际开发中的应用。这本书详细介绍了C#的各种特性,包括面向对象编程、泛型、异常处理、集合、多线程、反射、属性...

    C#经典范例50例(含源代码)

    《C#经典范例50例(含源代码)》是一个专为初学者设计的C#编程学习资源,其中包含了50个具有代表性的C#编程实例,旨在帮助学习者通过实践来掌握C#语言的核心概念和技术。这些案例涵盖了C#开发的多个方面,包括基础语法...

    C#浮点数和16进制字节数互相转换

    在C#编程语言中,处理浮点数与16进制表示之间转换是常见的任务,尤其是在数据存储、网络传输或二进制解析等场景。本文将深入探讨如何使用C#来实现单精度浮点数(Single)与16进制字符串的相互转换。 首先,我们需要...

    30个c#小程序,学习c#的基础。

    C#是一种现代化、类型安全的面向对象编程语言,由微软公司开发,主要用于Windows平台的应用程序开发,尤其是.NET框架。这个“30个C#小程序”压缩包文件显然是一份精心设计的学习资源,旨在帮助初学者逐步掌握C#的...

    编程乐趣:C#实现查询12306票价信息-20131128修改bug

    C#实现12306读取票价信息。 文章:http://blog.csdn.net/yysyangyangyangshan/article/details/16872539 20131128修改:修改关于在1-9号的日期查不到数据问题。

    C#实现 CRC16 MODBUS算法

    C#实现 CRC16 MODBUS算法 工业制造常用

    c#100例

    7. **异步编程**:C#引入了async/await关键字,使得异步编程变得简单。通过实例,可以了解如何使用Task和异步方法来实现非阻塞操作。 8. **Windows Forms和WPF**:这两个是C#的UI开发框架,包含了大量的控件和事件...

    设计模式:基于C#的工程化实现及扩展.pdf

    设计模式:基于C#的工程化实现及扩展

    杨中科老师的全13季视频: C#、Asp.net视频教程BT种子

    【C#与Asp.NET:基础到进阶的编程之旅】 C#和Asp.NET是Microsoft开发的两种关键的编程工具,广泛应用于构建高效的Web应用程序。由知名IT教育家杨中科老师主讲的全13季视频教程,是学习这两门技术的宝贵资源。这个...

    C# socket异步长连接

    本文将深入探讨"C# socket异步长连接"这一主题,包括其概念、工作原理以及如何在实际开发中实现。 首先,我们要理解什么是Socket。Socket是网络通信中的一个接口,它允许应用程序通过TCP/IP协议与另一台计算机进行...

Global site tag (gtag.js) - Google Analytics