Csharp 高级编程 C7.1.2(2)
C#2.0 使用委托推断扩展委托的语法
下面是示例 一个货币结构
代理的方法可以是实例的方法,也可以是静态方法,声明方法不同
实例方法可以使用委托推断,静态方法不可以用
示例代码:
/*
* C#2.0 使用委托推断扩展委托的语法
* 下面是示例 一个货币结构
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace C7._1._2_2
{
//一个货币结构
struct Currency
{
//美元
public uint Dollars;
//美分
public ushort Cents;
//构造函数
public Currency(uint dollars, ushort cents)
{
this.Dollars = dollars;
this.Cents = cents;
}
//重写TOSTRING方法
public override string ToString()
{
return string.Format("${0}.{1,-2:00}", Dollars, Cents);
}
//静态方法
public static string GetCurrencyUnit()
{
return "Dollars";
}
//强制转换float -> Currency
public static explicit operator Currency(float value)
{
checked {
uint dollars = (uint)value;
ushort cents = (ushort)((value - dollars) * );
return new Currency(dollars, cents);
}
}
//隐式转换 Currency -> float
public static implicit operator float(Currency value)
{
return value.Dollars + (value.Cents / 100.0f);
}
//隐式转换 uint -> Currency
public static implicit operator Currency(uint value)
{
return new Currency(value, );
}
//隐式转换 Currency -> uint
public static implicit operator uint(Currency value)
{
return value.Dollars;
}
}
class Program
{
private delegate string GetAString(); static void Main(string[] args)
{
int x = ;
//委托推断 GetAString test = new GetAString(x.ToString); C#2.0以后可以这样
GetAString test = x.ToString;
Console.WriteLine("Get the string is {0}", test()); Currency balance = new Currency(, ); //TEST 指向的是一个实例方法
test = balance.ToString;
Console.WriteLine("Get the string is {0}", test()); //TEST指向的是一个静态方法,注意声明方法不一样,不可以使用委托推断
test = new GetAString(Currency.GetCurrencyUnit);
Console.WriteLine("Get the string is {0}", test()); Console.ReadLine();
}
}
}
Csharp 高级编程 C7.1.2(2)的更多相关文章
- Csharp 高级编程 C7.1.2
第七章 代理(1) 一.代理要声明 二.代理使用步骤 声明代理 初始化代理(使用 实例的方法名 作为参数) 使用代理 代码示例: /*C7.1.2*/ using System; using Syst ...
- 解读经典《C#高级编程》第七版 Page45-50.核心C#.Chapter2
前言 本篇讲述枚举和名称空间. 01 枚举 首先需要明确枚举的概念:枚举是用户定义的整数类型.使用枚举的目标是,使用一组容易记忆的名称,来使得代码更容易编写和维护. 我们对比枚举的定义和类的定义,会发 ...
- 读《C#高级编程》第1章问题
读<C#高级编程>第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...
- MVC高级编程+C#高级编程
本人今年的目标是学习MVC高级编程和C#高级编程,把自己的基础打的扎实,本文中值是一个开到,定期会在上面记录学习的技术点和心得就,加油吧!!!!!
- 《C#高级编程》读书笔记
<C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) sh ...
- jquery插件开发继承了jQuery高级编程思路
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- jQuery高级编程
jquery高级编程1.jquery入门2.Javascript基础3.jQuery核心技术 3.1 jQuery脚本的结构 3.2 非侵扰事JavaScript 3.3 jQuery框架的结构 3. ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- multiple definition of `err_sys' 《UNIX环境高级编程》
本文地址:http://www.cnblogs.com/yhLinux/p/4079930.html 问题描述: [点击此处直接看解决方案] 在练习<UNIX环境高级编程>APUE程序清单 ...
随机推荐
- 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移
解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...
- angularjs中ng-switch的用法
<!DOCTYPE html> <html lang="zh-CN" ng-app="app" ng-controller="ctr ...
- cordova-plugin-app-version插件使用
此插件用来获取开发软件的版本号! 首先安装此插件: 命令行中输入 cordova plugin add cordova-plugin-app-version 然后刷新项目,就会在在项目plugin ...
- JavaScript电话号码正则
var telNumRE = /^((\d{11})|(\d{3,4}-)*(\d{7,8})+(-\d{1,4})*|(\d{5}))$/; 可以截取以下内容: 11位手机号:18911931207 ...
- 使vim中Syntastic支持C++11
安装好Syntastic后发现不支持c++11,会提示错误incompatible with c++98,解决方法如下: .vimrc中加入: let g:syntastic_cpp_compiler ...
- C语言初学 比较五个整数并输出最大值和最小值1
#include<stdio.h> #include<math.h> int max(int x,int y) { if(x>y) return x; else retu ...
- Visual Studio express
之前一直没用过Visual Studio的express版本.在最近一段时间,使用VS2010和2012的破解版都有点问题.vs2010突然不能使用,需要重新安装,家里和单位两台电脑都如此.家里一台电 ...
- Struts2学习笔记--Struts2的体系结构
1. Struts2体系结构 Struts是以前端控制器框架为主体的框架,用户的请求会通过控制器选择不同的Action类来执行具体的操作,在Action类中所有的Servlet对象(request.r ...
- Gradient Descent 和 Stochastic Gradient Descent(随机梯度下降法)
Gradient Descent(Batch Gradient)也就是梯度下降法是一种常用的的寻找局域最小值的方法.其主要思想就是计算当前位置的梯度,取梯度反方向并结合合适步长使其向最小值移动.通过柯 ...
- Unity3d有关图形尺寸大小的注意事项
主要参考了官方文档,然后根据个人的理解撰写该文.Unity3D支持的图形文件格式有 PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT(但根据本人的亲手测试,U ...