.net学习第十一天

1、里氏转换
1)、子类可以赋值给父类
2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。


2、
子类对象可以调用父类中的成员,但是父类对象永远都只能调用自己的成员。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 里氏转换
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();
            Person p = s;
            //子类可以赋值给父类
            //如果父类中装的是子类对象,那么可以将父类强转为子类
            Student ss = (Student)p;
            ss.StudentSayHello();
            Console.ReadKey();
        }
    }
    class Person
    {
        public void PersonSayHello()
        {
            Console.WriteLine("hello");
        }
    }
    class Student : Person
    {
        public void StudentSayHello()
        {
            Console.WriteLine("hello");
        }
    }
    class Teacher : Person
    {
        public void TeacherSayHello()
        {
            Console.WriteLine("hello");
        }
    }
}

3、
is:表示类型转换,如果能够转换成功,则返回一个true,否则返回一个false
as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null


4、protected
受保护的:可以在当前类的内部以及该类的子类中访问。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace protect保护
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            //可以再类的内部和子类中返问到,不能在其他地方返问
        }
    }
    public class Person
    {
        protected string _name;


        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }
    public class Student : Person
    {
        public void Test()
        {
            _name = "hello";
        }
    }
}



5、ArrayList集合的长度问题
每次集合中实际包含的元素个数(count)超过了可以包含的元素的个数(capcity)的时候,
集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 集合的内容
{
    class Program
    {
        static void Main(string[] args)
        {
            //arrayList
            //hashtable
            ArrayList al = new ArrayList();
            //不是静态类,可以创建一个集合对像
            //很多数据的集合,和数据的概念是一样的
            //数组的瓶颈在于长度不可变,数据的类型单一
            //集合有两大好处,长度可以任意改变,类型也不固定。
            al.Add(1);//可以放任意类型。
            al.Add(3.24);
            al.Add(true);
            al.Add(2.34m);
            al.Add("账单");
            al.Add('a');
            //al.Add(new int[]{1,2,3,4,5,5});
            al.AddRange(new int[] { 1, 2, 3, 4, 5, 5 });
            //Person p = new Person();
            //al.Add(p);
            //al.Add(al);
            al.AddRange(al);
            //al.Clear();
            //al.Remove(true);
            //al.RemoveAt(0);
            //al.RemoveRange(0, 3);
            //al.Reverse();
            //al.Sort();
            al.Insert(1, 546);
            for (int i = 0; i < al.Count; i++)
            {
                //将一个对象输出到控制台,默认情况下就是将对象的
                //命名空将打印出来
                //Console.WriteLine(al[i]);
                //if(al[i] is Person)
                //{
                //    ((Person)al[i]).sayHello();
                //}
                else if(al[i] is ArrayList)
                {
                    ((ArrayList)al[i])
                }
                //else if(al[i] is int[])
                //{
                //    for (int j = 0; j < ((int[])al[i]).Length; j++)
                //    {
                //        Console.WriteLine(((int[])al[i])[j]);
                //    }
                //}
                //else
                //{
                //    Console.WriteLine(al[i]);
                //}
                Console.WriteLine(al[i]);
            }
            Console.ReadKey();
        }
    }
    public class Person
    {
        public void sayHello()
        {
            Console.WriteLine("hello");
        }
    }
}



6、Hastable 键值对集合  字典  孙    sun---孙  
在键值对集合当中,我们是根据键去找值的。
键值对对象[键]=值;

*****:键值对集合当中,键必须是唯一的,而值是可以重复的

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 哈希表
{
    class Program
    {
        static void Main(string[] args)
        {
            //键值对集合
            //类似字典
            Hashtable ht = new Hashtable();
            ht.Add(1, "张三");
            ht.Add(2, "李四");
            ht.Add(false, "粗无");
            //for (int i = 0; i < ht.Count; i++)
            //{
            //    Console.WriteLine(ht[i]);
            //}
            foreach (var item in ht.Keys)
            {
                Console.WriteLine(ht[item]); 
            }
            //添加数据和循环输出

            Console.WriteLine(ht[1]);
            Console.ReadKey();
        }
    }
}


7、foreach循环
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace var类型
{
    class Program
    {
        static void Main(string[] args)
        {
            //var类型
            //在代码中必须对每一个变量的类型有一个明确的定义
            var n = 15;
            var n1 = "hello";
            var n3 = 3.14;
            var n4 = 3.15m;
            var n5 = true;
            var n6 = 'h';
            Console.WriteLine(n.GetType());
            Console.WriteLine(n1.GetType());
            Console.WriteLine(n3.GetType());
            Console.WriteLine(n4.GetType());
            Console.WriteLine(n5.GetType());
            Console.WriteLine(n6.GetType());
            Console.ReadKey();

            //var input;
            //input = "hello";
            隐式类型
            //var必须要赋初值



            //js是一种弱类型的语言
            //不需要对变量有一个明确的定义,可以根据变量的值得知变量的类型
            //c#中也可以用若类型的定义

        }
    }
}

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

namespace foreach循环
{
    class Program
    {
        static void Main(string[] args)
        {
            //int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 };
            //for (int i = 0; i < nums.Length; i++)
            //{
            //    Console.WriteLine(nums[i]);
            //}
            //foreach (var item in nums)
            //{
            //    Console.WriteLine(item);
            //}
            //Console.ReadKey();
            //当循环次数很大的时候,foreach的效率大大高于for
            Stopwatch sw = new Stopwatch();
            sw.Stop();
            for (int i = 0; i < 100000000; i++)
            {
                
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);

            Console.ReadKey();
        }
    }
}


8、编码格式
产生乱码的原因就是因为你保存这个文件的编码格式跟你打开这个文件的编码格式不一样。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 简繁转换
{
    class Program
    {
        private const string jian = "阿额的个个和的人风格让他";
        private const string fan = "阿额的个个和的人风格让他";
        static void Main(string[] args)
        {
            Hashtable hs = new Hashtable();
            for (int i = 0; i < jian.Length; i++)
            {
                hs.Add(jian[i], fan[j]);
            }
            Console.WriteLine("请输入汉字:");
            string input = Console.ReadLine();
            if(hs.ContainsKey(input))
            {
                Console.WriteLine(hs[input]);
            }
            else
            {
                Console.WriteLine(input);
            }
            Console.ReadKey();
        }
    }
}




9、文本文件
拖到txt文件中,还能看得懂的文件就是文本文件。

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

namespace path类
{
    class Program
    {
        static void Main(string[] args)
        {
           // Path path = new path();
            //静态类,无法进行实例化
            string str = @"E:\大三上\软件工程\文档模板\魏佳丽-软件测试计划书.doc";
            Console.WriteLine(Path.GetFileName(str));//快速获得一个路径下一个文件的名字
            Console.WriteLine(Path.GetFileNameWithoutExtension(str));//获得文件名但是不包含多占明
            Console.WriteLine(Path.GetExtension(str));//直接获得文件的扩展名
            Console.WriteLine(Path.GetDirectoryName(str));//获得文件夹的名称
            Console.WriteLine(Path.GetFullPath(str));//获得全路径
            Console.WriteLine(Path.Combine(@"c:\a\","b.txt"));
            int index = str.LastIndexOf("\\");
            string substr = str.Substring(index+1);
            Console.WriteLine(substr);

            Console.ReadKey();
        }
    }
}

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

namespace file类
{
    class Program
    {
        static void Main(string[] args)
        {
            //静态类
            //创建一个文件
            File.Create(@"C:\Users\Administrator\Desktop\new.txt");
            Console.WriteLine("创建成功");
            Console.ReadKey();
            File.Delete(@"C:\Users\Administrator\Desktop\new.txt");
            Console.WriteLine("删除成功");
            Console.ReadKey();
            File.Copy(@"C:\Users\Administrator\Desktop\new.txt", @"C:\Users\Administrator\Desktop\new1.txt");
            Console.WriteLine("复制成功");
            Console.ReadKey();
            byte[] buffer = File.ReadAllBytes(@"C:\Users\Administrator\Desktop\new.txt");
            //将字节数组中的每一个字符按照我们制定的编码转换成字符串
            string s = Encoding.GetEncoding("GBK").GetString(buffer);
            Console.WriteLine(s);
            Console.ReadKey();
            string str = "今天天气好晴朗,处处好风光";
            byte[] buffers = Encoding.Default.GetBytes(str);
            File.WriteAllBytes(@"C:\Users\Administrator\Desktop\new.txt",buffers);
            string[] ss=File.ReadAllLines(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default);
            foreach (var item in ss)
            {
                Console.WriteLine(item);
            }

            string sss = File.ReadAllText(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default);
            //后面的两种方法只能读取文本文件
            //如果要操作wav之类的文件只能用byte
            //可以操作具体的行,用lines
                //utf8utf7utf32 == unicode
            //GB2312简体,gbk既有简体又有繁体

        }
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值