ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers(索引器)
1.A,示例(Sample) 返回顶部

“索引器”示例

本示例演示 C# 类如何声明索引器以提供对类的类似数组的访问。

安全说明

提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。

在 Visual Studio 中生成并运行“索引器”示例

  1. 在“解决方案资源管理器”中,右击“索引器”项目并单击“属性”。

  2. 打开“配置属性”文件夹并单击“调试”。

  3. 在“命令行参数”属性中,输入 ..\..\Test.txt

  4. 单击“确定”。

  5. 在“调试”菜单中,单击“开始执行(不调试)”。

从命令行生成并运行“索引器”示例

  1. 若要编译示例程序,请在命令提示符处键入以下内容:

    csc indexer.cs
  2. 示例程序将反转作为命令行参数给出的文件中的字节。例如,若要反转 Test.txt 文件中的字节并查看结果,请发出下列命令:

    indexers Test.txt
    type Test.txt
  3. 若要将反转的文件更改回正常状态,请对同一文件再次运行该程序。

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(索引器)的更多相关文章

  1. C#中的索引器(Indexers)

    前两天刚刚学习完了属性,这两天又搂完了索引器,发现两者非常的相似,但是相似之外还有一些不同之处.今天就来总结一下索引器--Indexers 索引器的作用及格式 索引器的作用就是能够使类或者结构体的实例 ...

  2. C#中如何应用索引器 ( How to use Indexers )

    C#中索引器是个好东西, 可以允许类或者结构的实例像数组一样进行索引. 在foreach或者直接索引时很有用. 使用索引器可以简化客户端代码, 即调用者可以简化语法,直观理解类及其用途. 索引器只能根 ...

  3. ylbtech-LanguageSamples-Indexers_2(索引器)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers_2(索引器) 1.A,示例(Sample) 返回顶部 Indexers ...

  4. C# 索引器的理解和使用

    概述 此部分内容引用自MSDN文档 使用索引器可以用类似于数组的方式为对象建立索引. get 取值函数返回值. set 取值函数分配值. this 关键字用于定义索引器. value 关键字用于定义 ...

  5. 【.net 深呼吸】细说CodeDom(7):索引器

    在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参 ...

  6. C# 索引器,实现IEnumerable接口的GetEnumerator()方法

    当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [ ...

  7. C#基础回顾(三)—索引器、委托、反射

    一.前言                                                                                       ------人生路 ...

  8. C#索引器

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  9. C#之索引器

    实际中不使用这个东西,只做了解 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

随机推荐

  1. Median_of_Two_Sorted_Arrays(理论支持和算法总结)

    可以将这个题目推广到更naive的情况,找两个排序数组中的第K个最大值(第K个最小值). 1.直接 merge 两个数组,然后求中位数(第K个最大值或者第K个最小值),能过,不过复杂度是 O(n + ...

  2. windows下tomcat在当前窗口运行,不在新弹出的窗口运行

    window下tomcat在当前窗口启动,不在一个新的窗口启动startup.bat中最下几行goto setArgs:doneSetArgscall "%EXECUTABLE%" ...

  3. ora11g listener.ora

    配置内容方式1: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC152 ...

  4. 关于Free的override不能省略的问题,切记,虚方法是可以被覆盖的方法。

     

  5. Linux之父Linus的8个趣闻轶事

    博客中的文章均为 meelo 原创,请务必以链接形式注明本文地址 <只是为了好玩:Linux之父林纳斯自传>是一本很古老的书了,2001年就有了中文版,在2014的时候图灵图书又把它重新翻 ...

  6. Jenkins发布PHP代码

    实验环境 10.0.0.12 Jenkins服务器 10.0.0.13 远程服务器 一个远程的公开的git仓库(php代码在这个仓库里) 一.检查插件是否安装并安装插件 在通过Jenkins发布php ...

  7. Spark streaming技术内幕6 : Job动态生成原理与源码解析

    原创文章,转载请注明:转载自 周岳飞博客(http://www.cnblogs.com/zhouyf/)  Spark streaming 程序的运行过程是将DStream的操作转化成RDD的操作,S ...

  8. 【SQL】ORACLE在sqlplus中使用spool方式生成建表语句

    在实际生产中有时我们需要将一张表的数据导入到另外一张表,如果有PLSQL,我们可以通过PLSQL工具将数据导出为sql脚本,然后再在另外一个数据库中执行这个脚本.但有时在实际生产中我们没有PLSQL这 ...

  9. Python安装scrapy提示 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++

    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools&quo ...

  10. Flask实战第58天:发布帖子功能完成

    发布帖子后台逻辑完成 首先给帖子设计个模型,编辑apps.models.py class PostModel(db.Model): __tablename__ = 'post' id = db.Col ...