摘自MSDN :https://msdn.microsoft.com/zh-cn/library/bb549151(v=vs.100).aspx

1.平时定义一个委托

using System;
//声明委托
delegate string ConvertMethod(string inString); public class DelegateExample
{
public static void Main()
{
// 用UppercaseString 方法实例化委托
ConvertMethod convertMeth = UppercaseString;
string name = "Dakota";
// 调用委托
Console.WriteLine(convertMeth(name));
} private static string UppercaseString(string inputString)
{
return inputString.ToUpper();
}
}

2. 泛型委托 Func<T,TResult> 出场

备注: 还有个Action<T> 泛型委托,  和 Func<T,TResult> 的区别是前者没有返回值, 后者必须返回值

Action<T> : https://msdn.microsoft.com/zh-cn/library/018hxwa8(v=vs.100).aspx

Func<T,TResult>  : https://msdn.microsoft.com/zh-cn/library/bb549151(v=vs.100).aspx

using System;

public class GenericFunc
{
public static void Main()
{
// 注意Func<string,string>,直接就声明了委托,不像刚才那么麻烦
Func<string, string> convertMethod = UppercaseString;
string name = "Dakota";
// 调用委托
Console.WriteLine(convertMethod(name));
} private static string UppercaseString(string inputString)
{
return inputString.ToUpper();
}
}

3.配合 匿名函数(这里用的lambda) 出场,一行代码搞定!!!

using System;

public class LambdaExpression
{
public static void Main()
{
    //一行代码搞定!!! 左泛型委托,右函数实现
Func<string, string> convert = s => s.ToUpper(); string name = "Dakota";
    //调用委托
Console.WriteLine(convert(name));
}
}

4. 应用哈,将一个数组内的字母,全部转成大写

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq; static class Func
{
static void Main(string[] args)
{
//一行代码,左泛型委托,右实现
Func<string, string> selector = str => str.ToUpper(); // 创建数组.
string[] words = { "orange", "apple", "Article", "elephant" };
// 将委托传入数组Select方法,实现转成大写
IEnumerable<String> aWords = words.Select(selector); // 打印数组成员
foreach (String word in aWords)
Console.WriteLine(word);
}
}
/*
最后输出: ORANGE
APPLE
ARTICLE
ELEPHANT
*/

感受C# 的魅力,将一坨代码写成一行的更多相关文章

  1. 将近半个小时,把一小段简短的汇编代码写成了C语言代码

    我自己看,感觉好像一句一句翻译的,写得很是生硬,不如书上写的灵活 0040137E    8B7424 04       MOV ESI,DWORD PTR SS:[ESP+4]00401382    ...

  2. HTML5 模拟现实物理效果,感受 Web 技术魅力

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

  3. java代码打包成jar以及转换为exe

    教你如何把java代码打包成jar文件以及转换为exe可执行文件 1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有 ...

  4. 开发(ASP.NET程序)把写代码写至最有面向对象味道

    前几天,搬房子时又拿起<重构----改善既有代码的设计>这本书来随便翻来看下,重构Refactoring在开发时,是时常也经常会使用得到. 她确实教我们怎样把写程序写简洁,清楚 好明白,好 ...

  5. How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志

    How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志 Add Microsoft.Office.Server dll in your project ...

  6. Myeclipse中把java代码导成UML类图

    Myeclipse中把java代码导成UML类图 1.右键点击项目名称,选择New-------àUML2 Model 2.给类图命名 3.导成类图 1)如果要把整个项目导成类图,则把整个项目拖到类图 ...

  7. 牢骚 - 你代码写得丑,又不肯用好一点的IDE,这让我很为难啊。

    又有人问我代码错误,发过来就是一篇巨丑无比的代码,先不说左大括号转行还和代码写在同一行的谭浩强风格,你这狗啃的一样的缩进是闹哪样!粘进VS2015里面,自动格式化,瞬间赏心悦目,编译错误出了5行,我直 ...

  8. 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!

    瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...

  9. 引擎渲染速度测试--我js代码写得少你不要骗我

    上一张图,很多人都看过的 地址:http://aui.github.io/artTemplate/test/test-speed.html 这个地址是在看artTemplate的时候看到的,很早都看过 ...

随机推荐

  1. 2000条你应知的WPF小姿势 基础篇<40-44 启动关闭,Xaml,逻辑树>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  2. ADO.NET Entity Framework 在哪些场景下使用?

    在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...

  3. 配置hibernate,Struts。文件

    hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ...

  4. Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结

    Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...

  5. mako模板调试与使用技巧

    django默认的模板太不灵活,想把一个数字0.15显示成15%都得费不少劲,太不爽!!! 网上查阅了几个模板系统,有Jinja2等等,最后发现mako能够直接支持python的语句,最为灵活,果断选 ...

  6. iOS-----程序异常处理----- 断言NSAssert()和NSParameterAssert区别和用处

    NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以尽管的使用NSAssert,可以不去使用asser ...

  7. 计算照片的面积(WPF篇)

    昨天,老周突发其想地给大伙伴们说了一下UWP应用中计算照片面积的玩法,而且老周也表示会提供WPF版本的示例.所以,今天就给大伙们补上吧. WPF是集成在.net框架中,属于.net的一部分,千万不要跟 ...

  8. miniui中的相关问题

    miniui中的datagrid,若需要为其中表格设置值,则: 必须保证查出来的json中字段对应field,且json的格式必须为: {“data”:[{"id":"0 ...

  9. Windows环境下vscode-go安装笔记

    一.介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: ...

  10. 如果你也会C#,那不妨了解下F#(1):F# 数据类型

    本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-1.html 简单介绍 F#(与C#一样,念作"F Sharp")是一种基于. ...