ylbtech-LanguageSamples-Indexers(索引器)

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

ylbtech-LanguageSamples-Indexers(索引器)
// 版权所有(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[1];

            stream.Seek(index, SeekOrigin.Begin);

            stream.Read(buffer, 0, 1);

            return buffer[0];

        }

        // 在偏移量 index 处写入一个字节,然后将其返回。

        set 

        {

            byte[] buffer = new byte[1] {value};

            stream.Seek(index, SeekOrigin.Begin);

            stream.Write(buffer, 0, 1);

        }

    }



    // 获取文件的总长度。

    public long Length 

    {

        get 

        {

            return stream.Seek(0, SeekOrigin.End);

        }

    }

}



// 演示 FileByteArray 类。

// 反转文件中的字节。

public class Reverse 

{

    public static void Main(String[] args) 

    {

        // 检查参数。

        if (args.Length != 1)

        {

            Console.WriteLine("Usage : Indexer <filename>");

            return;

        }



        // 检查文件是否存在

        if (!System.IO.File.Exists(args[0]))

        {

            Console.WriteLine("File " + args[0] + " not found.");

            return;

        }



        FileByteArray file = new FileByteArray(args[0]);

        long len = file.Length;



        // 交换文件中的字节以对其进行反转。

        for (long i = 0; i < len / 2; ++i) 

        {

            byte t;



            // 请注意,为“file”变量建立索引会调用

            //  FileByteStream 类上的索引器,该索引器在文件中读取

            // 和写入字节。

            t = file[i];

            file[i] = file[len - i - 1];

            file[len - i - 1] = t;

        }



        file.Close();

    } 

}
View Code

1.B.2,

1.C,下载地址(Free Download)返回顶部

 

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(language)