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

理论:

析构函数

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

    想一个问题: 1/3+1/3+1/3=1.0 0.3+0.3+0.3 =0.9 想一想在小数的世界里要什么表示1/3呢!它的办法就是取一个与1/3十分接近的小数来代替:如上面例子中的0.3来代替1/3 ...

  2. Initialization failed for block pool Block pool(转载)

    2014-06-18 20:34:59,622 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed ...

  3. CVTE 一面

    在网上做完了测评之后,当天就收到面试的通知了,CVTE效率真高.第二天就去参加面试,面试前紧张了一把,后来去到之后发现只有几个应聘者,很多面试官前面都没人,估计现在中午一点,所以都去吃饭了.我和一个同 ...

  4. Android模拟器PANIC: Could not open:问题解决方法

    最主要的就是环境变量没有配置或者我们使用的是绝对路径配置环境变量.这时我们只需要修改一下Android的环境变量就可以了. 具体解决方法如下: ①在环境变量中创建变量名:ANDROID_SDK_HOM ...

  5. Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode

    Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode Element DOM Tree jQuery pl ...

  6. <td style="word-break:break-all"> 在html中控制自动换行

    在html中控制自动换行   其实只要在表格控制中添加一句 <td style="word-break:break-all">就搞定了. 其中可能对英文换行可能会分开一 ...

  7. IOS obj-c、c、c++混编

    今天发现这个问题,上网找了一下资料,发现原来如下: .m 文件可以混合c 和 objective-c 代码 .mm  文件可以混合 c c++ objective-c 代码 .c  .cpp  不能混 ...

  8. js动画学习(五)

    九.多属性同时运动 前面的例子都是每个属性单独运动,如果想要多属性同时运动怎么办?比如,我想要一个div的onmouseover事件中宽和高同时变化.下面这个函数是单独变宽: window.onloa ...

  9. MSSQL数据库统计所有表的记录数

    今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程. CREATE PROCEDURE TableCount AS BEGIN SET NOCOUNT ON ),RowsCount INT ...

  10. WPF之DataGrid应用(转)

    原文:http://blog.csdn.net/sanjiawan/article/details/6785394 前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功 ...