ylbtech-LanguageSamples-Indexers(索引器)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers(索引器) |
1.A,示例(Sample) 返回顶部 |
“索引器”示例
本示例演示 C# 类如何声明索引器以提供对类的类似数组的访问。
安全说明 |
---|
提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。 |
在 Visual Studio 中生成并运行“索引器”示例
在“解决方案资源管理器”中,右击“索引器”项目并单击“属性”。
打开“配置属性”文件夹并单击“调试”。
在“命令行参数”属性中,输入
..\..\Test.txt
。单击“确定”。
在“调试”菜单中,单击“开始执行(不调试)”。
从命令行生成并运行“索引器”示例
若要编译示例程序,请在命令提示符处键入以下内容:
- csc indexer.cs
示例程序将反转作为命令行参数给出的文件中的字节。例如,若要反转 Test.txt 文件中的字节并查看结果,请发出下列命令:
- indexers Test.txt
- type Test.txt
- indexers Test.txt
若要将反转的文件更改回正常状态,请对同一文件再次运行该程序。
1.B,示例代码(Sample Code)返回顶部 |
1.B.1, Indexer.cs
- // 版权所有(C) Microsoft Corporation。保留所有权利。
- // 此代码的发布遵从
- // Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
- //
- //版权所有(C) Microsoft Corporation。保留所有权利。
- // indexer.cs
- // 参数:indexer.txt
- using System;
- using System.IO;
- // 将大文件当作字节数组
- // 访问的类。
- public class FileByteArray
- {
- Stream stream; // 包含用于访问
- // 该文件的基础流。
- // 创建封装特定文件的新 FileByteArray。
- public FileByteArray(string fileName)
- {
- stream = new FileStream(fileName, FileMode.Open);
- }
- // 关闭流。这应是
- // 结束前的最后一个操作。
- public void Close()
- {
- stream.Close();
- stream = null;
- }
- // 提供对文件的读/写访问的索引器。
- public byte this[long index] // long 是 64 位整数
- {
- // 在偏移量 index 处读取一个字节,然后将其返回。
- get
- {
- byte[] buffer = new byte[];
- stream.Seek(index, SeekOrigin.Begin);
- stream.Read(buffer, , );
- return buffer[];
- }
- // 在偏移量 index 处写入一个字节,然后将其返回。
- set
- {
- byte[] buffer = new byte[] {value};
- stream.Seek(index, SeekOrigin.Begin);
- stream.Write(buffer, , );
- }
- }
- // 获取文件的总长度。
- public long Length
- {
- get
- {
- return stream.Seek(, SeekOrigin.End);
- }
- }
- }
- // 演示 FileByteArray 类。
- // 反转文件中的字节。
- public class Reverse
- {
- public static void Main(String[] args)
- {
- // 检查参数。
- if (args.Length != )
- {
- Console.WriteLine("Usage : Indexer <filename>");
- return;
- }
- // 检查文件是否存在
- if (!System.IO.File.Exists(args[]))
- {
- Console.WriteLine("File " + args[] + " not found.");
- return;
- }
- FileByteArray file = new FileByteArray(args[]);
- long len = file.Length;
- // 交换文件中的字节以对其进行反转。
- for (long i = ; i < len / ; ++i)
- {
- byte t;
- // 请注意,为“file”变量建立索引会调用
- // FileByteStream 类上的索引器,该索引器在文件中读取
- // 和写入字节。
- t = file[i];
- file[i] = file[len - i - ];
- file[len - i - ] = t;
- }
- file.Close();
- }
- }
1.B.2,
1.C,下载地址(Free Download)返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylbtech-LanguageSamples-Indexers(索引器)的更多相关文章
- C#中的索引器(Indexers)
前两天刚刚学习完了属性,这两天又搂完了索引器,发现两者非常的相似,但是相似之外还有一些不同之处.今天就来总结一下索引器--Indexers 索引器的作用及格式 索引器的作用就是能够使类或者结构体的实例 ...
- C#中如何应用索引器 ( How to use Indexers )
C#中索引器是个好东西, 可以允许类或者结构的实例像数组一样进行索引. 在foreach或者直接索引时很有用. 使用索引器可以简化客户端代码, 即调用者可以简化语法,直观理解类及其用途. 索引器只能根 ...
- ylbtech-LanguageSamples-Indexers_2(索引器)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers_2(索引器) 1.A,示例(Sample) 返回顶部 Indexers ...
- C# 索引器的理解和使用
概述 此部分内容引用自MSDN文档 使用索引器可以用类似于数组的方式为对象建立索引. get 取值函数返回值. set 取值函数分配值. this 关键字用于定义索引器. value 关键字用于定义 ...
- 【.net 深呼吸】细说CodeDom(7):索引器
在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参 ...
- C# 索引器,实现IEnumerable接口的GetEnumerator()方法
当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [ ...
- C#基础回顾(三)—索引器、委托、反射
一.前言 ------人生路 ...
- C#索引器
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...
- C#之索引器
实际中不使用这个东西,只做了解 using System; using System.Collections.Generic; using System.Linq; using System.Text ...
随机推荐
- php上传文件常见错误
今天在文件上传过程中遇到的文件上传不过去,和网页报错,最后经查看总结有以下几个方面 上传文件错误码 error=0 正常上传 error=1 上传的大小超过了input[type=file]的文件上传 ...
- Django_admin源码流程
admin.py from django.contrib import admin from . import models """ 通过原生的django admin来 ...
- 你想了解的轮询、长轮询和websocket都在这里了
日常生活中,有很多需要数据的实时更新,比如群聊信息的实时更新,还有投票系统的实时刷新等 实现的方式有很多种,比如轮询.长轮询.websocket 轮询 轮询是通过设置页面的刷新频率(设置多长时间自动刷 ...
- jdk1.6错误:no such provider: BC jdk1.6支持SSL问题
程序调用https请求,由于jdk1.6只支持1024的DH,需要调整 1.在$JAVA_HOME/jre/lib/ext 下添加加密组件包 bcprov-jdk15on-1.52.jar和bcpro ...
- MySQL中的内连接、外连接、交叉连接
内连接(INNER JOIN): 分为三种 等值连接.自然连接.不等连接 外连接(OUTER JOIN): 左外连接(LEFT OUTER JOIN或LEFT JOIN) 右 ...
- 基于node的前端页面实时更新。呦吼~
学习了gulp,webpack后越发觉得前端开发万分的有趣,首当其冲的就是解决了狂按f5的尴尬. 当我们按下ctrl+s保存后页面自动更新了,我就觉得我f5键在隐隐的发笑. 1.node_npm_li ...
- VS2013下实现移动端的跨平台开发
http://www.th7.cn/Program/Android/201412/336394.shtml 前一天准备下载VS2015预览版,到VisualStudio官网一看,发现微软发布了Visu ...
- linux 把用户加入一个组&从这个组中移除
# usermod -a -G www zhou // zhou这个用户现在属于两个组 zhou www # groups zhou zhou : zhou www # gpasswd -d zhou ...
- sublime插件总汇
本人用过多个编辑器(非IDE),发现sublime的样式非常帮,现在做个插件总汇 ChineseLocalzations 中文插件 Emmet ...
- ZOJ 3781 Paint the Grid Reloaded
枚举,$BFS$,连通块缩点. 可以枚举一开始染哪个位置,然后逐层往外染色,看最多需要多少操作次数,也就是算最短距离.连通块缩点之后可以保证是一个黑白相间的图,且每条边的费用均为$1$,$BFS$即可 ...