从c#数组求和说起
c#是一种玩具语言
为什么这么说,
举个简单的例子,提问:对数组[1,2,3]求和有几种方法?
我能说出来的,四种。说出来,不是上网查出来。
for,foreach,sum,while。
for好像大家都不提倡,foreach举例的时候用到比较多,sum是牛逼哄哄的各路”老师“推荐最多的用法,为什么说”老师"要加引号,因为到现在为止没见到谁用sum的时候考虑集合为空的情况,而集合为空的时候sum会抛异常。
foreach呢,枚举,牛逼吧。。。现在我加一个条件,第二个数如果等于1要求退出循环,foreach怎么办?正确的写法是,先int 一个Index ,在循环体外面,循环体里递增,index==2的时候判断。定义在循环体外面! 我还能说什么?本身就没带来多少可读性的语法糖,简直是bug一样的存在。
foreach和yield联用能提供一种伪enumable,使非集合的变量提供一种伪集合的效果。等等,等等。这好像是框架应该做的事情吧,不是语言应该做的吧?这是任何需要的场合程序员都能自己做出来的效果吧?我定义个伪集合类和for联用不能达到这个效果吗?
好的,不重复发明轮子,好的。c#和基础类库加起来其实就是个开发框架,好的。
厉害,语言和框架本身是一体的。
那么请你把for移除出去,sum也移除出去吧。同样的逻辑,四种不同的写法,各自有各自的优缺点,这样还不算是重复发明轮子吗?能不能集中力量把foreach完善好,加一个类似于获取当前index的功能,或者把sum完善好,让它增加一个默认值。 现在维护的时候要同时记四套方案各自优缺点,何必呢?其实foreach sum提供的优化,跟真正的应用框架完全不能相比,企业级的应用在做框架的时候,肯定还得写自己的一大堆方法,就好比说我是鲁迅笔下的小伙计,我希望茴香豆的茴字,当然是只有一种写法最好最好,记账本来就是体力活,为什么还要在字体写法上增加复杂度,你奶奶的,会四种写法对除了孔乙己外其他人都么用。
类库是有不少,java也有啊?那种成功的语言没有类库?只要开发一次就有了,这些微软是做了,他不做,也一定会有人做。然后呢,网络请求多少种写法,webrequest,webclient,httpclient?其实变成字节流以后原理都差不多好不好?我现在要记你那么多方法才能维护好代码,我还不如直接放弃这种语言,找一种简单的语言,然后把原理搞清楚,有类库用类库,没有类库就自己写,对于资深程序而言那样更有积累性好不好?
从c#数组求和说起的更多相关文章
- js数组求和
array1.reduce(callbackfn[, initialValue]) callback : 函数执行在数组中每个值 initialValue : 对象作为第一个参数回调的第一次调用使用 ...
- 《Intel汇编第5版》 数组求和
一.LOOP指令 二.间接寻址 三.汇编数组求和 INCLUDE Irvine32.inc includelib Irvine32.lib includelib kernel32.lib includ ...
- Javascript数组求和的方法总结 以及由斐波那契数列得到的启发
一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以 ...
- [java大数据面试] 2018年4月百度面试经过+三面算法题:给定一个数组,求和为定值的所有组合.
给定一个数组,求和为定值的所有组合, 这道算法题在leetcode应该算是中等偏下难度, 对三到五年工作经验主要做业务开发的同学来说, 一般较难的也就是这种程度了. 简述经过: 不算hr面,总计四面, ...
- 个人项目-数组求和(语言:C++)
prog1详细要求: [第一版本程序Prog1要求:] + 给定一个数组,实现数组元素求和:,具体要求:实现对一维数组(a[100])的所有元素相加运算. + 数据准备:a)数组长度:100:b)数组 ...
- 【原】C++11并行计算 — 数组求和
本文转载请注明出处 -- polobymulberry-博客园 0x00 - 前言 最近想优化ORB-SLAM2,准备使用并行计算来提高其中ORB特征提取的速度.之前对并行计算方面一窍不通.借此机会, ...
- js 数组求和,多种方法,并比较性能
可以借用下面12种方法对数组求和,创建一个长度为10w的数组,进行测试 every() 检测数值元素的每个元素是否都符合条件. filter() 检测数值元素,并返回符合条件所有 ...
- reduce实现数组求和
对于实现数组求和,我们常用的思路是通过for.while,对数组进行迭代,依次将他们的值加起来,下面列举常用的两种方法 第一种: var arr = [1,2,3,4,5,6]; Array.prot ...
- Java并发和多线程2:3种方式实现数组求和
本篇演示3个数组求和的例子. 例子1:单线程例子2:多线程,同步求和(如果没有计算完成,会阻塞)例子3:多线程,异步求和(先累加已经完成的计算结果) 例子1-代码 package cn.fansuni ...
- Java实现不遍历数组求和
package com.jts.t1; /** * 不遍历数组求和 * 方法省略异常检查 */ public class Demo1 { public static void main(String[ ...
随机推荐
- display: table 实现menu等高居中排列
display: table 属性,顾名思义,就是就像表格一样陈列元素,设置这个属性之后,就具有了表格所特有的某些特性,比如居中对齐之类的. 本篇文章要实现的需求也是非常常见的——左侧栏menu菜单居 ...
- 013PHP文件处理——filemtime filectime fileatime date_default_timezone_set touch
<?php /** * filemtime filectime fileatime date_default_timezone_set touch */ /*filemtime:获取文件的修改时 ...
- HDU 2895 贪心 还是 大水题
DESCRIPTION:大意是给你两个字符串.编辑距离只有add和delete会产生.所以.编辑距离最短一定是两个字符串的长度差.然后...呵呵呵呵.... 猜题意就可以了...但是...我觉得这个题 ...
- C# 使用cmd输入参数来执行控制台应用程序
在外部可以使用cmd命令向C#控制台应用程序发送参数,并使之处理.main函数的形参一定要包含string[] args,否则该控制台应用程序不能接收外部参数.在使用cmd调用程序的时候,外部每个参数 ...
- C++中的接口继承和实现继承
很多人认为,C++中是不存在接口继承的,只有Java.C#这类语言才提供了相应的语法支持. 但是,如同鲁迅说过的某句名言:世上本没有接口继承,用的人多了,才有了接口继承.C++中依然可以实现接口继承, ...
- 玩转X-CTR100 l STM32 l STM32F4 l 蓝牙串口通信
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 蓝牙串口通信模块,X-CTR100控制 ...
- ReportViewer遇到的坑
在VS2010下 使用ReportViewer的时候,用WEB导出报表,报错“”文件生成:本地报表处理期间出错.“. ” “报表定义具有无法升级的无效目标命名空间“http://schemas.mic ...
- sping整合redis,以及做mybatis的第三方缓存
一.spring整合redis Redis作为一个时下非常流行的NOSQL语言,不学一下有点过意不去. 背景:学习Redis用到的框架是maven+spring+mybatis(框架如何搭建这边就不叙 ...
- 接收一条音频(系统音频)彩信,点菜单键选择View slideshow,不能播放,提示是否导入vCard
[前提条件]: [操作步骤]:接收一条音频(系统音频,格式为ogg),点菜单键选择View slideshow [测试结果]:不能播放,提示是否导入vCard [预期结果]:可以播放 [备注]:附lo ...
- Texas Instruments matrix-gui-2.0 hacking -- run_script.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...