C#中析构函数,命名空间及字符串的运用(Ninth day)

摘要:
)字符串处理字符串可以被视为字符的只读数组。使用s.ToCharArray()方法获取字符串的char数组。调用newstring(char[])构造函数来创建char数组的字符串。另一个也将自动转换为字符串类型。方法可以将所有类型转换为字符串类型。ToString()方法。常用方法s1。String类的Equals(s2)不会直接更改字符串的内容。

又到了总结知识的时间了,今天在云和学院学习了析构函数,命名空间及字符串的处理,现在就为大家总结下来。

理论:

析构函数

不能在结构中定义析构函数。只能对类使用析构函数。
一个类只能有一个析构函数。
无法继承或重载析构函数。
无法调用析构函数。它们是被自动调用的。
析构函数既没有修饰符,也没有参数。
命名空间
•namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。
•如果代码和被使用的类在一个namespace则不需要using。
•在不同命名空间下的类调用有两种方法:
–写全称  命名空间.类名
–先using引用命名空间,再调用
(注:using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源。)
字符串处理
string可以看做是char的只读数组。char c = s[1];
•C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。
* 如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。
•字符串的连接+,两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型
•一切类型都可以调用.ToString()方法转换成字符串类型.
String类常用方法
s1.Equals(s2,StringComparison.OrdinalIgnoreCase),两个字符串进行比较不区分大小写的比较。
ToLower():得到字符串的小写形式。(这个在前面已经总结过)
ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白。(这个在前面已经总结过)
•注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.ToLower()
•要区分变量名和变量指向的值的区别。程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变。
字符串的分割
string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;
string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);
字符串函数详解
•字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。
•取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;
•string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。
•bool Contains(string value)判断字符串中是否含有子串value
•bool StartsWith(string value)判断字符串是否以子串value开始;
•bool EndsWith (string value)判断字符串是否以子串value结束;
•int IndexOf(string value):取子串value第一次出现的位置。
•Int IndexOf(string value,int startIndex)
实操:
给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分.
–张三 男 18  三科成绩为:90 95 80
–小兰 女 16  三科成绩为:95 85 100
*首先在定义一个类
class Student
    {//给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分.
//张三 男 18  三科成绩为:90 95 80
//小兰 女 16  三科成绩为:95 85 100
        string name;
        string gender;
        int age=18;
        int chinese;
        int math;
        int english;
        public Student(string n,int a,string g,int c,int m,int e )
        {
            name = n;
            age = a;
            gender = g;
            chinese = c;
            math = m;
            english = e;       
        }
        public Student(string n, string g, int c, int m, int e)
        {
            name = n;
            gender = g;
            chinese = c;
            math = m;
            english = e;

        }
        public void Stt()
        {
            Console.WriteLine("大家好,我叫{0},是{1}同学,今年{2}岁,我的三科成绩为:{3},{4},{5}", name, gender, age, chinese, math, english);
        }
       
    }

在Main函数里写

static void Main(string[] args)
        {
            Student stu1 = new Student("张三",18,"男",90,95,80);
            Student stu2 = new Student("小兰",16,"女 ",95, 85,100);
            Student stu3 = new Student("小兰", "女 ", 95, 85, 100);
            stu1.Stt();
            stu2.Stt();
            stu3.Stt();
            Console.ReadKey();
        }

 运行结果是:

C#中析构函数,命名空间及字符串的运用(Ninth day)第1张

•写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算价格Price (1元/公里):
–0-100公里        票价不打折
–101-200公里    总额打9.5折
–201-300公里    总额打9折
–300公里以上    总额打8折

有一个方法,可以显示这张票的信息.90公里90块钱

•测试上面的类.
class Ticket
    {
        #region 构造函数
         public Ticket(int distance)
        { 
            if(distance<0)
          {
             distance = 0;
          }
           this.distance = distance;
        }
        #endregion   
        int  distance;
        public int Distance
        {
            get {   
                  return distance;
                }  
        }
        double price=500;
        public double Price
        {
            get { 
            if(distance<=100 && distance>=0)
            { 
                return distance * 1.0;
                
            }
            else if(distance>=101 && distance<=200)
            {
                return distance * 0.95;
            }
            else if(distance>=201 && distance<=300)
            {
                return distance * 0.9;
            }
                else
            {
                return distance*0.8;
            }
                 
            }
        }
        public void Show()
        {
            Console.WriteLine("{0}公里需要{1}钱",distance,price);
        }
    }
 static void Main(string[] args)
        {
            Ticket t1 = new Ticket(110);
            Console.WriteLine(t1.Price);
            Console.ReadKey();

        }

 测试结果:这道题不知道哪里出现问题了,结果并没有运用到Show方法

C#中析构函数,命名空间及字符串的运用(Ninth day)第2张

 字符串的运用

C#中析构函数,命名空间及字符串的运用(Ninth day)第3张

随机输入你心中想到的一个名字,然后输出它的字符串长度  Length:可以得字符串的长

C#中析构函数,命名空间及字符串的运用(Ninth day)第4张

两个学员输入各自最喜欢的课程名称, 判断是否一致,如果相等,则输出你们俩喜欢相同的课程. 如果不相同,则输出你们俩喜欢不相同的课程.

C#中析构函数,命名空间及字符串的运用(Ninth day)第5张

让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日

  static void Main(string[] args)
        {
                      Console.WriteLine("请输入日期");
            string date = Console.ReadLine();

            string[] strs = date.Split('-');

            string datetine = strs[0] + "年" + strs[1] + "月"+strs[2]+"日" ;

            Console.WriteLine(datetine);
            Console.ReadKey();
         }

 C#中析构函数,命名空间及字符串的运用(Ninth day)第6张

今天就总结到这里吧,下周一在继续学习吧。加油!

免责声明:文章转载自《C#中析构函数,命名空间及字符串的运用(Ninth day)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python中的各个包的安装,用pip安装whl文件Ubuntu 磁盘挂载错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

线程工具类ThreadUtils

1.pom引入guava依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version>...

php 面试题

1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名  例如: http://www.phpddt.com/abc/de/fg.php?id=1 需要取出 php 或 .php $url = 'http://www.baidu.com/wang/liu/4.php?i=90'; $urlArr = parse_url($url); $ex...

JPA的Embeddable注解

来源于http://zjsword2000.blog.163.com/blog/static/4583983320083184844734/ 在hibernate中实现自定义类型,只要实现UserType接口即可或者以Component的形式提供.JPA的@Embedded有点类似,通过此注释可以在你的Entity中使用一般的java对象,此对象需要用@...

支付宝手机网站支付(基于Java实现支付宝手机网站支付)

支付宝支付核心需要的参数是(APPID,PRIVATE_KEY,ALIPAY_PUBLIC_KEY) APPID:创建应用后就有的APPID。 PRIVATE_KEY:应用私钥 ALIPAY_PUBLIC_KEY:支付宝公钥 上面的2,3的参数得自己弄到,参考文档:https://docs.open.alipay.com/291/105971/ 下...

关于将桌面扩展到监视器的问题 extended my windows desktop onto this monitor

说下思路吧 下面是网上找的Use the EnumDisplayDevices() API call to enumerate the display devices on the system and look for those that don't have the DISPLAY_DEVICE_ATTACHED_TO_DESKTOP flag se...

深入理解JVM3

VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途、创建和销毁时间。根据《Java虚拟机规范(第二版)》的规定,JVM包括下列几个运行时数据区域: 1.程序计数器(Program Counter Register): 每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令,对于非Native...