• Span复习


    Span复习

    using System;
    
    namespace Span复习
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Console.WriteLine("Hello World!");
                //IntroSpans();
                //var span1 = IntroSpans();
    
                //CreatSlices(span1);
    
                int[] int1 = {3,5,2,6,4,5,2,4,6,8,};
                int[] int2 = {5,7,2,3,6,9,3};
                var span1 = new Span<int>(int1);
                var span2 = new Span<int>(int2);
                ChangeValues(span1,span2);
            }
    
            //使用Span<T>,可以直接访问数组元素。数组的元素没有复制,但是它们可以直接使用,这比复制要快。
            private static Span<int> IntroSpans()
            {
                int[] arr1 = new int[] {1,4,5,11,13,18};
                var span1 = new Span<int>(arr1);
                span1[1] = 11;
                System.Console.WriteLine($"arr1[1] is changed via span[1]: {arr1[1]}");
                System.Console.WriteLine($"span1[1]: {span1[1]}");
                return span1;
    
            }
    
            //创建切片
            private static void CreatSlices(Span<int> span1)
            {
                System.Console.WriteLine(nameof(CreatSlices));
                int[] arr2 = {3,5,7,9,11,13,15};
                //var span2 = new Span<int>(arr2);
                var span3 = new Span<int>(arr2,start:3,length:3);
                var span4 = span1.Slice(start:2,length:4);
    
                DisplaySpan("Content of span3:",span3);
                DisplaySpan("Content of span4:" ,span4);
                System.Console.WriteLine();
            
    
    
            }
    
            //DisplaySpan()用于显示Span的内容
            private static void DisplaySpan(string title,ReadOnlySpan<int> span)
            {
                System.Console.WriteLine(title);
                for(int i = 0;i<span.Length;i++)
                {
                    System.Console.Write($"{span[i]} ");
    
                }
                System.Console.WriteLine();
    
            }
    
            //使用Span改变值
            private static void ChangeValues(Span<int> span1,Span<int> span2)
            {
                System.Console.WriteLine(nameof(ChangeValues));
                var span4 = span1.Slice(start:4);
                span4.Clear();//清除了span1从第5位开始后面的数,并用数0填充
                DisplaySpan("content of span1",span1);
                var span5 = span2.Slice(start:3,length:3);
                span5.Fill(42);//span2从第4位开始的三位,用数42来填充
                DisplaySpan("content of span2",span2);
                span5.CopyTo(span1);
                DisplaySpan("content of span1",span1);
                if(!span1.TryCopyTo(span4))
                {
                    System.Console.WriteLine("Couldn't copy span1 to span4 because span4 is to small ");
                    System.Console.WriteLine($"length of span1: {span1.Length},length of span4: {span4.Length} ");
    
                }
                System.Console.WriteLine();
    
            }
        }
    }

    使用Span改变值事例输出如下

    ChangeValues
    content of span1
    3 5 2 6 0 0 0 0 0 0
    content of span2
    5 7 2 42 42 42 3
    content of span1
    42 42 42 6 0 0 0 0 0 0
    Couldn't copy span1 to span4 because span4 is to small
    length of span1: 10,length of span4: 6
  • 相关阅读:
    JAVA中的集合框架
    JAVA异常
    体检套餐
    浅谈面向对象三大编程的特征
    JAVA.C#堆和栈的区别
    linux 安装nginx 详解
    解决Fatal: Not a gitflow-enabled repo yet. Please run 'git flow init' first
    JMeter实现多用户并发功能测试-打卡功能测试
    关于Spring boot中读取属性配置文件出现中文乱码的问题的解决(针对application.properties)
    IDEA项目左边栏只能看到文件看不到项目结构
  • 原文地址:https://www.cnblogs.com/singhwong/p/11937036.html
Copyright © 2020-2023  润新知