1、值类型和引用类型:

值类型:int、double、bool、char、decimal、struct、enum

引用类型:string、自定义类、数组

存储: 值类型的值是存储在内存的栈当中。

引用类型的值是存储在内存的堆中。

2、字符串

1)、字符串的不可变性

当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。

当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。

2)、我们可以讲字符串看做是char类型的一个只读数组。

ToCharArray();将字符串转换为char数组

new string(char[] chs):能够将char数组转换为字符串

3、字符串提供的各种方法

1)、Length:获得当前字符串中字符的个数

2)、ToUpper():将字符转换成大写形式

3)、ToLower():将字符串转换成小写形式

4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写

5)、Split():分割字符串,返回字符串类型的数组。

6)、Substring():截取字符串。在截取的时候要包括截取的那个位置。

7)、IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有,返回-1

8)、LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有,同样返回-1

9)、StartsWith():判断以....开始

10)、EndsWith():判断以...结束

11)、Replace():将字符串中某个字符串替换成一个新的字符串

12)、Contains():判断某个字符串是否包含指定的字符串

13)、Trim():去掉字符串中前后的空格

14)、TrimEnd():去掉字符串中结尾的空格

15)、TrimStart():去掉字符串中前面的空格

16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null

17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。

4、继承

我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员, 单独的封装到一个类中,作为这些类的父类。

Student、Teacher、Driver  子类 (派生类 )

Person         父类 (基类)

子类继承了父类,那么子类从父类那里继承过来了什么?

首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。

问题:子类有没有继承父类的构造函数?

答:子类并没有继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数, 创建父类对象,让子类可以使用父类中的成员。 所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了, 子类就调用不到了,所以子类会报错。

解决办法:

1)、在父类中重新写一个无参数的构造函数。(不常用)

2)、在子类中显示的调用父类的构造函数,使用关键字:base()

继承的特性

1、继承的单根性:一个子类只能有一个父类。

2、继承的传递性

object是所有类的基类。

5、new关键字

1)、创建对象

2)、隐藏从父类那里继承过来的同名成员。

隐藏的后果就是子类调用不到父类的成员。

6、里氏转换

1)、子类可以赋值给父类

2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。

子类对象可以调用父类中的成员,但是父类对象永远都只能调用自己的成员。

is:表示类型转换,如果能够转换成功,则返回一个true,否则返回一个false

as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null

is的用法

if (p is Student)

{

Student ss = (Student)p;

ss.StudentSayHello();

}

else

{

Console.WriteLine("转换失败");

}

as的用法

Student t = p as Student;

t.StudentSayHello();

Console.ReadKey();

protected 受保护的:可以在当前类的内部以及该类的子类中访问。

7、集合

创建了一个集合对象

ArrayList list = new ArrayList();

集合:很多数据的一个集合

数组:长度不可变、类型单一

集合的好处:长度可以任意改变  类型随便

ArrayList集合的长度问题: 每次集合中实际包含的元素个数(count)超过了可以包含的元素的个数(capcity)的时候, 集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。

ArrayList list = new ArrayList();

添加单个元素

list.Add(true);

list.Add(1);

list.Add("张三");

添加集合元素

list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });

list.AddRange(list);

list.Clear();清空所有元素

list.Remove(true);删除单个元素 写谁就删谁

list.RemoveAt(0);根据下标去删除元素

list.RemoveRange(0, 3);根据下标去移除一定范围的元素

list.Sort();//升序排列

list.Reverse();反转

list.Insert(1, "插入的");在指定的位置插入一个元素

list.InsertRange(0, new string[] { "张三", "李四" });在指定的位置插入一个集合

bool b = list.Contains(1);判断是否包含某个指定的元素

创建一个集合,里面添加一些数字,求平均值与和,最大值,最小值

 ArrayList list = new ArrayList();
list.AddRange(new int[] { , , , , , , , , });
int sum = ;
int max = (int)list[];
for (int i = ; i < list.Count; i++)
{
if ((int)list[i] > max)
{
max = (int)list[i];
}
sum += (int)list[i];
}
Console.WriteLine(sum);
Console.WriteLine(max);
Console.WriteLine(sum/list.Count);
Console.ReadKey();

写一个长度为10的集合,要求在里面随机地存放10个数字(0-9),但是要求所有的数字不重复

 ArrayList list = new ArrayList();
Random r = new Random();
for (int i = ; i <; i++)
{
int rNumber = r.Next(, );//集合中没有这个随机数
if (!list.Contains(rNumber))
{
list.Add(rNumber);
}
else//集合中有这个随机数
{
//一旦产生了重复的随机数 这次循环就不算数
i--;
} }
for (int i = ; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();

8、Hastable 键值对集合

在键值对集合当中,我们是根据键去找值的。

键值对对象[键]=值;

键值对集合当中,键必须是唯一的,而值是可以重复的

创建了一个键值对集合对象:

             Hashtable ht = new Hashtable();
ht.Add(, "张三");
ht.Add(, true);
ht.Add(, '男');
ht.Add(false, "错误的");
ht.Add(, "张三");
ht[] = "新来的";//这也是一种添加数据的方式
ht[] = "张三";
ht.Add("abc", "cba");
Console.WriteLine(ht[]);//在键值对集合中 是根据键去找值的

9、foreach循环

foreach (var item in nums)

{

Console.WriteLine(item);

}

10、Path类

string str = @"C:\3000soft\Red Spider\Data\Message\老赵.wav";

Console.WriteLine(Path.GetFileName(str));//获得文件名

Console.WriteLine(Path.GetFileNameWithoutExtension(str));//获得文件名但是不包含扩展名

Console.WriteLine(Path.GetExtension(str));//获得文件的扩展名

Console.WriteLine(Path.GetDirectoryName(str));//获得文件所在的文件夹的名称

Console.WriteLine(Path.GetFullPath(str));//获得文件所在的全(绝对)路径

Console.WriteLine(Path.Combine(@"c:\a\" , "b.txt"));//连接两个字符串作为路径

编码格式 产生乱码的原因就是因为你保存这个文件的编码格式跟你打开这个文件的编码格式不一样。

11、文件

File.Create(@"C:\Users\SpringRain\Desktop\new.txt");创建一个文件

File.Delete(@"C:\Users\SpringRain\Desktop\new.txt");删除一个文件

File.Copy(@"C:\Users\SpringRain\Desktop\code.txt", @"C:\Users\SpringRain\Desktop\new.txt");复制一个文件

File.Move(@"C:\Users\SpringRain\Desktop\code.txt", @"C:\Users\SpringRain\Desktop\newnew.txt");剪切

C#面向对象总结2的更多相关文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  2. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  3. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  4. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  5. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  6. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  7. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  10. .NET基础拾遗(2)面向对象的实现和异常的处理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. iPad和iPhone开发区别

    原文:http://mobile.51cto.com/iphone-273895.htm iPad与iPhone 开发区别详解是本文要介绍的内容,先来看看他们的区别. 1.首先我们先从官方发布的SDK ...

  2. HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)

    Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...

  3. <c:if>标签判断是否为空

    <c:if test="${not empty feeType}">  注意:大括号外面不能为空. ${orderNo.ethdOriginalOrderNo} < ...

  4. python视频教程大全集下载啦

    需要学习python的相关视频资源: python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV Python 从入门到精通视频(全60集)链接:http: ...

  5. SnowNLP:一个处理中文文本的 Python 类库

    https://segmentfault.com/a/1190000000362372

  6. html5 svg动画

    http://www.zhangxinxu.com/sp/svg/ 以上是svg的一个线上编辑器,也可以adobe Illustrator制作生成. 我们通过以上编辑器可以获得以下代码. 例: < ...

  7. python学习笔记七 初识socket(进阶篇)

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  8. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序 ...

  9. 《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话

    数据分析基础概念:标准计分: 1.无论作为变量的满分为几分,其标准计分的平均数势必为0,而其标准差势必为1.2.无论作为变量的单位是什么,其标准计分的平均数势必为0,而其标准差势必为1.公式为: 离差 ...

  10. python decorator的理解

    一.decorator的作用 装饰器本质上是一个Python函数,可以让其他函数在不做任何代码变动的前提下增加额外功能. 装饰器的返回值也是一个函数对象.python里函数也是对象. 它经常用于有切面 ...