• 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

    // 版权所有(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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Topcoder SRM656div1 250 ( 期望DP )
    SCAU 2015 GDCPC team_training1
    第五次群赛暨清明节专场
    HDU 2783 You’ll be Working on the Railroad(最短路)
    HDU 4013 Distinct Subtrees(树的最小表示)
    HDU 4014 Jimmy’s travel plan(图计数)
    SCAU 2015 GDCPC team_training0
    HDU 1024 Max Sum Plus Plus (递推)
    UVA 12849 Mother’s Jam Puzzle( 高斯消元 )
    HDU 4285 circuits( 插头dp , k回路 )
  • 原文地址:https://www.cnblogs.com/ylbtech/p/4197019.html
Copyright © 2020-2023  润新知