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

理论:

析构函数

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

运行结果是:

•写一个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();
}

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

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

  1. Namespacing in PHP (php 中使用命名空间)

    最近学习一下php的命名空间,中文文档不多,搜到一篇英文的,讲的还蛮系统的,特此翻译一下,以备以后查阅,大家有什么高见或更深刻或者 更悟透的见解希望能不吝赐教,晚辈感激不尽. 原文: http://c ...

  2. 解读Python编程中的命名空间与作用域

    变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典.一个Python表达式可以访问局部命名空间和全局命名空间里的变量.如果一个局部变量和一个全局 ...

  3. 说说PHP中的命名空间相关概念

    说说PHP中的命名空间相关概念 1. PHP中的命名空间是什么? 什么是命名空间?"从广义上来说,命名空间是一种封装事物的方法.在非常多地方都能够见到这样的抽象概念. 比如.在操作系统中文件 ...

  4. PHP中的命名空间(namespace)及其使用详解

    PHP中的命名空间(namespace)及其使用详解 晶晶 2年前 (2014-01-02) 8495次浏览 PHP php自5.3.0开始,引入了一个namespace关键字以及__NAMESPAC ...

  5. python中常用的一些字符串

    capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 c ...

  6. [转载] linux查找目录下的所有文件中是否含有某个字符串

    链接自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,并略加修订. 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...

  7. js中获取URL中指定的查询字符串

    js中获取URL中指定的搜索字符串,主要利用location对象实现,废话少说,上代码. function getSearchString(key) { // 获取URL中?之后的字符 var str ...

  8. PHP判断字符串中是否包含指定字符串,支持中文哦

    RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...

  9. Mysql hql字符串字段中是否包含某个字符串,用 find_in_set

    有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被','分开,现在要取出具有某权限的所有成员列表. 创建表: 1 CREATE TABLE us ...

随机推荐

  1. ThinkPHP第二十六天(JQuery操作select,SESSION和COOKIE)

    1.JQuery操作select,假设<select id="my"> A:双击选项<option>事件,应该是select的dbclick事件. B:获得 ...

  2. github/python/ show me the code 25题(二)

    第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], &q ...

  3. latex 批量注释

    在LaTex中的注释有3种方法: 1. 右键单击选中要注释的文本,选择 Insert Comment ,WinEdt 就会自动给选定的行添加 % ,完成段落文本的注释: 右键单击选中已经注释的文本,选 ...

  4. BBM(Bad Block Management)坏块管理

    不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制.何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性.            ...

  5. Android 三大图片缓存原理、特性对比

    这是我在 MDCC 上分享的内容(略微改动),也是源码解析第一期发布时介绍的源码解析后续会慢慢做的事. 从总体设计和原理上对几个图片缓存进行对比,没用到他们的朋友也可以了解他们在某些特性上的实现. 上 ...

  6. UVA 11475 Extend to Palindrome(后缀数组+ST表)

    [题目链接] http://acm.hust.edu.cn/vjudge/problem/27647 [题目大意] 给出一个字符串,要求在其后面添加最少的字符数,使得其成为一个回文串.并输出这个回文串 ...

  7. Android eng版系统烧录

    这里我只能记录下过程 Android有四层,最底层的Linux是一个kernel,然后是运行时库层,驱动大部分在这两层完成,接着是Framework层,主要是Android源码,最后是在源码基础上进行 ...

  8. Jquery开发插件的方法

    Jquery未开发插件提供了两个方法: (1)Jquery.extend(object)    -为Jquery类本身添加新的方法;代码如下: $.extend({ add:function(a,b) ...

  9. JavaWeb学习过程 之c3p0的使用

    这几天在学习使用MVC模式来做几个小项目,在学习的过程中,用到了数据库连接池.便特意去学习了一下. 一.谈一谈为什么要使用数据库连接池 在开发基于数据库的web程序时,传统的模式(在servlet,b ...

  10. 在C++中如何使用C

    如下代码: /*C语言头文件:Max.h*/ #ifndef _MAX_H_ #define _MAX_H_ int Max(int nA,int nB) #endif /*C语言实现文件:Max.c ...