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

理论:

析构函数

不能在结构中定义析构函数。只能对类使用析构函数。
一个类只能有一个析构函数。
无法继承或重载析构函数。
无法调用析构函数。它们是被自动调用的。
析构函数既没有修饰符,也没有参数。
命名空间
•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 100string 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();}

运行结果是:

•写一个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方法

 字符串的运用

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

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

让用户输入一个日期格式如: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();}

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

转载于:https://www.cnblogs.com/ysaw/p/4098159.html

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

  1. C#开发中关于加密解密字符串的使用方法

    C#开发中关于加密解密字符串的使用方法 C#加密解密字符串方法 首先在web.config | app.config 文件下增加如下代码: <?xml version="1.0&quo ...

  2. 在C#中加密和解密字符串[重复]

    本文翻译自:Encrypting & Decrypting a String in C# [duplicate] This question already has an answer her ...

  3. C#中使用正则表达式匹配字符串

    C#中使用正则表达式匹配字符串的方法如下: 1.使用System.Text.RegularExpressions命名空间: 2.使用Matches()方法匹配字符串,格式如下: MatchCollec ...

  4. mysql 反向匹配子串,Mysql 模糊匹配(字符串str中是否包含子字符串substr)

    1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. SELECT 'test' LIKE '%e%' as `ret`; # 1 SELECT 'tes ...

  5. python文件作用域是什么_Python中的命名空间、作用域以及locals() 和 globals()

    最近一直看一本python经典教材--<Python学习手册>,因为之前都是突击学的,也没有仔细看一些经典教材,所以感觉自己的基础掌握的还不是很好,虽然网络上资源多,但我觉得还是有必要买本 ...

  6. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  7. php判断数组是否存在字符串中,php判断数组元素中是否存在某个字符串的方法

    今天在写一个函数的时候,需要用到判断数组中是否存在某个字符串,方便我们继续后面的操作,这里简单为大家介绍下,需要的朋友可以参考下 方法一:采用in_array(value,array,type) ty ...

  8. python中的文档字符串(docString)

    python中的文档字符串(docString) - 泥土 - 博客园 python中的文档字符串(docString) Posted on 2009-02-19 15:27 泥土 阅读(2122) ...

  9. regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾

    regexp 好汉字符串 by Catherine Vassant (aka Codingk8) 由凯瑟琳·瓦森(Catherine Vassant)(又名Codingk8) 如何在JavaScrip ...

最新文章

  1. 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
  2. 最近要换个主机,现在的太慢了
  3. Unix系统编程()虚拟内存管理
  4. 干货丨有关机器学习每个人都应该了解的东西
  5. C# 中奇妙的函数 -- 1. ToLookup
  6. Flask的闪现(message) 请求扩展 中间件 蓝图
  7. 某office前台任意文件上传漏洞分析
  8. HttpMoudle实现用户身份验证
  9. helm部署SkyWalking
  10. SpringCloud 配置安全验证、服务消费端处理、无状态 Session 配置、定义公共安全配置程序类
  11. linux 清空进程recv q,Linux中ss命令Recv-Q和Send-Q详解
  12. 《WinForm开发系列之控件篇》Item16 ErrorProvider
  13. 2020 快手 被吊打面经
  14. 蓝桥杯2019c语言b组试题,2020年7月B组C++蓝桥杯真题试水
  15. mysql基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004
  16. 学习能力篇:“拼图式”学习法
  17. 【青少年编程】【Scratch】03 声音模块
  18. 强烈推荐:C#编码规范手册
  19. 计算广告第二版电子版_88J9-1图集:室外工程-围墙、围栏(第二版),电子版带走...
  20. java对接 布防 海康威视_java调用海康威视sdk获取车牌号demo

热门文章

  1. 【Linux系统编程】进程间通信之命名管道
  2. 【Vs2015】 常用字体的设置
  3. web_reverse_proxy -- haproxy
  4. 每天一道LeetCode-----只可能有'.'和'*'的字符串正则匹配
  5. liunx从界面模式改到命令行模式
  6. 最小栈—leetcode155
  7. 将 app 打包成 deb 发布安装
  8. Android安卓模拟器中模拟SD卡
  9. 转义字符 /r与/n的区别
  10. pytorch 之 有关交叉熵函数使用的几点说明