多态 C#编程记录

本文探讨了C#编程中的多态概念,包括装箱、拆箱、泛型集合List的使用,以及相对路径和绝对路径的选择。同时讲解了如何处理数组中的奇偶数,操作文件流如FileStream、StreamReader和StreamWriter。文章还深入介绍了抽象类和虚方法,以及在实际编程中如何利用多态特性来实现不同类型的对象操作,如计算几何形状的面积和周长,以及读写外部设备数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.绝对路径:
通过给定路径直接能在电脑中找到文件

相对路径:
文件相对于应用程序的路径

在开发中尽量使用相对路径

2.装箱、拆箱

装箱:就是将值类型转换为引用类型。

拆箱:将引用类型转换为值类型

看两种类型是否发生装拆箱,要看这两种关系是否存在继承关系。

尽量避免拆箱或者装箱,减少执行所需的时间

using System;
//using System.Collections;
using System.IO;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args) 
        {
            ////读文件
            //byte[] buffer = File.ReadAllBytes(@" ");
            //string s = Encoding.Default.GetString(buffer);
            ////写文件
            //string str = "今天天气好晴朗,处处好风光";
            //byte[] buffer1 = Encoding.Default.GetBytes(str);
            //File.WriteAllBytes(@" ",buffer);


            //将数据按照数组的方式 输出  精确到每一行数据
            //String[] contents=File.ReadAllLines(@"",Encoding.Default);
            //foreach(string item in contents)
            //{
            //    Console.WriteLine(item);
            //}
            //Console.ReadLine();


            //将数据按照字符串的形式输出  将里面的数据所都输出
            //string str = File.ReadAllText(@"",Encoding.Default);
            //Console.WriteLine(str);
            //Console.ReadLine();

            //File.WriteAllLines(@"",new string[] {"456"," ds"});
            //Console.WriteLine("pk");
            //Console.ReadLine();

            //File.WriteAllText(@"",);
            //Console.WriteLine("OK");
            //Console.ReadLine();

            File.AppendAllText(@"", new string[] { });
            Console.WriteLine("ok");
            Console.ReadLine();
        }
    }
}

List泛型集合,不用拆装箱

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
//using System.Collections;
using System.IO;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args) 
        {
            int n = 10;
            object o = n;//装箱
            int nn = (int)o;//拆箱
            //ArrayList list = new ArrayList();
            List<int> list = new List<int>();
            Stopwatch sw = new Stopwatch();
            sw.Start();
            for(int i=0;i<100000;i++)
            {
                list.Add(i);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
            Console.ReadLine();
        }
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
//using System.Collections;
using System.IO;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args) 
        {
            Dictionary<int, string> dic = new Dictionary<int, string>();
            dic.Add(1, "张三");
            dic.Add(2, "李四");
            dic.Add(3, "王五");
            dic[1] = "新来的";
            foreach(KeyValuePair<int,string> kv in dic)
            {
                Console.WriteLine("{0}--{1}",kv.Key,kv.Value);
            }
            //foreach(var item in dic.Keys)
            //{
            //    Console.WriteLine("{0}--{1}", item, dic[item]);
            //}
            Console.ReadLine();
        }
    }
}

1.将一个数组中的奇数放到一个集合中,再将偶数放到另一个集合中,最终将两个集合合并为一个集合,并且奇数显示在左边,偶数显示在右边。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
//using System.Collections;
using System.IO;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args) 
        {
            int[] nums = { 1, 2, 3, 4, 5 };
            List<int> listou = new List<int>();
            List<int> listji = new List<int>();
            for(int i=0;i<nums.Length;i++)
            {
                if(nums[i]%2==0)
                {
                    listou.Add(nums[i]);
                }
                else
                {
                    listji.Add(nums[i]);
                }
            }
            //listou.AddRange(listji);
            //foreach(int item in listou)
            //{
            //    Console.WriteLine(item+" ");
            //}
            listji.AddRange(listou);
            foreach(int item in listji)
            {
                Console.WriteLine(item + " ");
            }
            Console.ReadLine();
        }
    }
}

2.提示用户输入一个字符串,通过foreach循环将用户输入的字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值