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

理论:

析构函数

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

    大家都知道使用opacity调节透明度不仅是背景透明了而且选择区域的文字也跟着透明了, 这是我们不想要的效果,于是强大的css3便有了只让背景透明的功能 那就是background:rgba(0,0, ...

  2. npm使用教程(未完)

    npm docs 设置镜像站 因为npmjs的官方网站,总会下载比较慢或打不开,所以通常需要设置一下镜像站来更好的安装npm库 npm install --registry http://regist ...

  3. javax.ejb.SessionBean

    import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.ejb.CreateException; //有状态 ...

  4. 解决Windows 程序界面闪烁问题的一些经验

    原帖地址:http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化 ...

  5. stringstream字符串流

    例题详解 題目:输入的第一行有一个数字 N 代表接下來有 N 行資料,每一行資料里有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫一個程式將每行的总和印出來. 輸入: 3 1 2 ...

  6. [HDU 4741]Save Labman No.004[计算几何][精度]

    题意: 求两条空间直线的距离,以及对应那条距离线段的两端点坐标. 思路: 有一个参数方程算最短距离的公式, 代入求即可. 但是这题卡精度... 用另外的公式(先算出a直线上到b最近的点p的坐标, 再算 ...

  7. HTML静态网页(标签、表格)

    HTML静态网页: 打开DREAMWEAVER,新建HTML,如下图: body的属性: bgcolor 页面背景色 background  背景壁纸.图片 text  文字颜色 topmargin ...

  8. mysql 数据备份

    一.备份数据库并下载到本地[db_backup.php] php代码: <?php // 数据库参数(此处测试,直接给定,项目中使用配置文件) $cfg_dbname = 'blog'; $cf ...

  9. centos7 环境搭建

    centos7 环境搭建    CentOS-7-x86_64-DVD-1511.iso    vmware121. 安装    使用iso安装系统:2. 修改yum源到光盘        先把光盘C ...

  10. 5.4.3 RegExp构造函数属性

    RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性).这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化.关于这些属性的另一个独特之处,就是可以通 ...