.NET
文章平均质量分 71
zwvista
这个作者很懒,什么都没留下…
展开
-
协变(covariance),逆变(contravariance)与不变(invariance)
协变,逆变与不变能在使用父类型的场景中改用子类型的被称为协变。 能在使用子类型的场景中改用父类型的被称为逆变。 不能做到以上两点的被称为不变。 以上的场景通常包括数组,继承和泛型。协变逆变与泛型(C#,Java)在C#中,泛型参数的类型缺省是不变的,但是我们可以在定义泛型类或接口时通过给参数类型加上out或in来标注该参数类型是协变还是逆变。 * 协变意味着你能把 IEnumerable<s原创 2017-11-03 17:22:16 · 3894 阅读 · 0 评论 -
FP编程实践:CPS编程风格及其C++模拟实现
Haskell代码cfold2 f z [] = zcfold2 f z (x:xs) = f x z (/y -> cfold2 f y xs)cfold f z l = cfold2 (/x t g -> f x (g t)) z lCPS> cfold (+) 0 [1,2,3,4] 10 CPS> cfold2 (/x t g -> (x : g t)) []原创 2010-01-14 17:43:00 · 2556 阅读 · 0 评论 -
FP大串烧:SQL,LINQ,F#以及STL(2)
Aggregates原创 2010-10-23 22:47:00 · 2445 阅读 · 0 评论 -
ReactiveX 学习笔记(1)
IObservable<T>IObservable(被观察者)接口,表示可观察的数据流对象。被观察者接口只包含一个Subscribe方法。调用该方法,意味着观察者对象开始观察数据流。开始观察之后如果需要停止观察,必须销毁该方法所返回的IDisposable对象。//Defines a provider for push-based notification.public i...原创 2016-11-24 08:45:07 · 883 阅读 · 0 评论 -
趣味编程:不使用循环对数组求和
左折叠与右折叠原创 2011-10-21 09:12:48 · 7334 阅读 · 0 评论 -
FP大串烧:SQL,LINQ,F#以及STL(1)
看看函数型编程范式是如何将这几种看似互不相关的技术紧密联系在一起的。注:本文中函数型编程范式主要涉及集合(列表)操作。SQL主要涉及SELECT语句。LINQ主要涉及LINQ to Objects,示例代码取自Visual Studio自带的C# Samples。F#主要涉及list和Seq库函数。STL指C++标准库,主要涉及算法部分。Restriction(Filtering)原创 2010-10-13 01:15:00 · 2376 阅读 · 2 评论 -
编程技巧:C#中的Cast By Example(如何将弱类型的匿名类型参数转换为强类型)
using System;namespace ConsoleApplication1{ class Program { static T CastByExample(object obj, Func example) { return (T)obj; } static void f(ob原创 2012-07-06 22:17:33 · 3368 阅读 · 0 评论 -
编程技巧:使用LINQ如何通过多次调用GroupBy实现分组嵌套
using System;using System.Linq;namespace ConsoleApplication1{ class Program { public class S { public int Year; public int Month; public原创 2012-07-12 07:20:22 · 3296 阅读 · 0 评论 -
隐藏特性:C#的“|”与“&”运算符(没有短路特性的布尔运算符)
在C#语言中,“||”与“&&”布尔运算符具有短路特性,相当于VB的OrElse和AndAlso运算符而“|”与“&”运算符不仅能用于数值运算,也能用于布尔运算,作为布尔运算符两者都没有短路特性,相当于VB的Or和And运算符注:其实其他C系列语言(C/C++以及Java)也具有同样的语言特性。using System;namespace ConsoleApplication1原创 2012-07-16 20:47:36 · 2821 阅读 · 0 评论 -
编程技巧:将lambda用作局部函数
预备知识:变量及函数的作用域应该做到最小化根据这一原则,如果某个函数A只在另一个函数B内调用的话,A函数应该在B函数内定义并使用,即把A函数定义成B函数内部的局部函数。注:这里的函数是泛指,OOP语言中类的方法以及FP语言中的lambda都可视作函数。以下以C#代码为例using System;namespace ConsoleApplication1{ class P原创 2012-07-20 08:26:53 · 1533 阅读 · 0 评论 -
编程技巧:lambda与递归
以下代码演示如何使用lambda来定义阶乘这一递归函数。C#Func factorial = null;factorial = x => x == 0 ? 1 : x * factorial(x - 1);int f5 = factorial(5); // f5 == 120VBDim factorial As Func(Of Integer, Integer)fact原创 2012-07-23 07:17:26 · 2058 阅读 · 0 评论 -
F#学习笔记
WindowsForms 移植C#F#原创 2015-06-22 10:58:52 · 1050 阅读 · 0 评论 -
趣味编程:静夜思(F#3.0版)
静夜思(F#3.0版)原创 2015-05-28 14:09:13 · 1593 阅读 · 0 评论 -
趣味编程:静夜思
C#版本摘自老赵点滴 - 追求编程之美 C#代码using System;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Print(string text, int offset) {原创 2010-04-16 01:00:00 · 2144 阅读 · 0 评论 -
趣味编程:用LINQ自动“找茬”
编程自动找出两张相似图片中的不同之处原创 2010-06-10 01:33:00 · 967 阅读 · 0 评论 -
趣味编程:用LINQ求解八皇后问题
C#源码摘自CSDN论坛.NET技术贴:从n皇后问题看Linq的对算法思想的清晰表达力,原作者sp1234。注:变量名及程序逻辑稍有改动,求解部分加上了注释。 C#代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Consol原创 2010-04-18 03:26:00 · 1310 阅读 · 0 评论 -
LINQ扩展库Ix.NET
Ix.NET提供了对LINQ的一些扩展原创 2015-05-14 08:30:41 · 1332 阅读 · 0 评论 -
正则表达式(Java,C#,C++)
课题使用正则表达式匹配字符串 使用正则表达式 “\d{3}-(\d{4})-\d{2}” 匹配字符串 “123-4567-89” 返回匹配结果:’”123-4567-89” 以及 “4567”使用正则表达式替换字符串 使用正则表达式 “\d+” 匹配字符串 “123-4567-89” 将匹配结果即三个数字串全部翻转过来,返回结果 “321-7654-98”。使用正则表达式分割字符串原创 2017-12-01 19:55:36 · 715 阅读 · 0 评论