前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解。

内容

  1.StringBuilder类:由于string类一旦创建,则不能更改。如果做字符串拼凑的话,将会非常耗费空间,如:

 string str = "aaa";
str += "bbb";

如果执行上面的操作,则str首先在堆里开辟一个空间来存放"aaa",然后执行第二句语句的时候则再另外开辟一个空间来存放"aaabbb"。这样将非常耗费空间资源。所以在这类型的应用中不适用string,而使用StringBuilder。StringBulider在System.Text这一命名空间下。

 StringBuilder sb = new StringBuilder();
sb.Append("aaa");
sb.Append("bbb");

这种形式的字符串拼凑则不会再另外开辟空间,直接在字符串后面添加。

  2. 控制语句:

    (1)if()...; if()...else()...;if()...else if()...else()...

    (2)switch()...case...

    (3)while()...

    (4)do...while()

    (5)for(;;)

    (6)foreach():对一个集合或者数组进行遍历。

    (7)break,continue,return

    (8)应用:求随机数的和及平均值:

class Program
{
static void Main(string[] args)
{
int sum = ;
float average = ;
Random rand = new Random();
ArrayList arrayList = new ArrayList();
Console.WriteLine("你想求几个数的和及它们的平均值:");
int iMax = int.Parse(Console.ReadLine());
for (int i = ; i < iMax; i++)
{
arrayList.Add(rand.Next(, ));
}
Console.WriteLine("这{0}个数是:",iMax);
foreach (var nums in arrayList)
{
Console.WriteLine(nums);
}
for (int i = ; i < iMax; i++)
{
sum += (int) arrayList[i];
}
Console.WriteLine("这{0}个数的和是:{1}",iMax,sum);
average = (float) sum/iMax;
Console.WriteLine("这{0}个数的平均值是:{1}", iMax, average);
Console.ReadKey();
}
}

  3.异常:在程序运行过程中产生使程序终止正常运行的事件,如数组越界。错误是语法上有问题,编译通不过,而异常是可以编译通过的。

try{
int[] array = {,,,};
Console.WriteLine(array[]); //要发生异常的代码
}
catch(Exception ex)
{
Console.WriteLine(ex.Message); //处理代码
//Console.WriteLine("网站正在维护中...");
}
Console.ReadKey();
finaly
{
Console.WritelLine("正常"); //无论异常是否发生,都会执行的代码
}

    抛出异常:

class Program
{
static void A(string str)
{
if (str==null)
{
throw new ArgumentException();
}
}
static void Main(string[] args)
{
Console.WriteLine("输出结果为:");
try
{
string str = null;
A(str);
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
}
}
}

  4.数组、集合:

    (1)一维数组声明:int[] a = {1,2,3};或者int[] a = new int[3];或者int[] a = new int[]{1,2,3};可以用foreach语句来循环遍历输出数组元素。

    (2)二维数组声明:int[,] a = {{1,2},{2,3},{3,4}};int[,] a = new int[3,2];int[,] a = new int[,]{{1,2},{2,3},{3,4}}。

    (3)Console.ReadLine()是读取控制台输入的字符串

    (4)ArrayList是一个集合,其大小可以按照需求动态增加和减少。

static void Main(string[] args)
{
int[] i = new int[] { , , , };
ArrayList list = new ArrayList();
foreach (var a in i)
{
list.Add(a);//将a添加到List中
}
list.RemoveAt();//删除第一个元素
list.Add();//在List的末尾添加0
list.Insert(, );//在索引值为1处插入5
list.Clear();//清除现有所有元素
foreach (var b in list)
{
Console.Write(b);
}
}

但是ArrayList也存在一个问题,ArrayList操作的对象是Object类型,Object类型是任何数据类型的一个父类,是一个引用类型,一般操作的是值类型的数据,所以需要进行值类型转引用类型的装箱操作,程序的效率将下降。解决装箱拆箱问题使用泛型,如:List<int> list = new List<int>{};。

    (5)如果频繁地对数组进行增加、插入或者删除的话,很难定位到具体想要的数据,这种情况下就应该使用Hashtable。

Hashtable ht = new Hashtable();
ht.Add("key1","aaa");
ht.Add("key2","bbb");
foreach (var key in ht.Keys)
{
Console.WriteLine(ht[key]);
}

哈希表的泛型:

Dictionary<string,string> dic = new Dictionary<string,string>();
dic.Add("key1","aaa");
dic.Add("key2","bbb");
foreach(var key in dic.Keys)
{
Console.WriteLine(dic[key]);
}

  5.封装、继承、多态:面向对象的三大特征。

    (1)封装:把类的内部隐藏起来,以防止外部世界看见一个面向对象的概念。

    访问修饰符:public(访问不受限制);protected(访问仅限于本类或者其子类--可以跨程序集);private(访问仅限于本类);internal(访问仅限于当前程序集);protected internal(访问本类或者同一个程序集或者子类--可以跨程序集)。对于字段和方法,默认的访问权限是private,对于类而言,默认的访问权限是internal。

    新建一个类库文件:新建项目->类库->生成->dll文件。

后记:复习,练习,课外学习。

ASP.NET动态网站制作(20)-- C#(3)的更多相关文章

  1. ASP.NET动态网站制作(3)--css(2)

    前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今 ...

  2. ASP.NET动态网站制作(17)-- C#(1)

    前言:用C#也有一年多了,基本上都是边用边学的,现在可以跟着老师系统的学习一下,感觉应该挺好的. 内容: 1.网站部署的相关内容:  (1)想要做一个网站,首先得去买一个域名,老师的域名是在美橙上买的 ...

  3. ASP.NET动态网站制作(1)--html

    前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...

  4. ASP.NET动态网站制作(0)

    前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...

  5. ASP.NET动态网站制作(28)-- 三层框架(2)

    前言:三层框架的第二节课,继续上次课的内容. 内容: 1.三层框架的使用目的:可以将视图层和业务逻辑层及实体层分开,可以提高代码的扩展性,安全性,可以实现程序的低耦合性. 2.GetModel方法及G ...

  6. ASP.NET动态网站制作(26)-- Ajax

    前言:这节课讲解关于Ajax的相关内容. 内容: 1.当点击页面中的一个按钮提交数据或请求数据的时候,整个页面的信息都会提交(不管信息是否是提交或者请求的数据,页面中所有的数据都提交),这样耗用的时间 ...

  7. ASP.NET动态网站制作(24)-- ADO.NET(3)

    前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次 ...

  8. ASP.NET动态网站制作(22)-- ADO.NET(1)

    前言:这节课开始真正地学习WEB开发,ADO.NET就是一组允许.NET开发人员使用标准的.机构化的,甚至无连接的方式与数据交互的技术.所属的类库为:System.Data.dll. 内容: 1.AD ...

  9. ASP.NET动态网站制作(19)-- C#(2)

    前言:C#的第二次课,依旧讲解C#的基础知识. 内容: 1.GC:垃圾回收机制,可以回收托管模块中的垃圾. 2.值类型和引用类型:  (1)值类型:所有的数值类型都是值类型,如int,byte,sho ...

随机推荐

  1. ASIHTTPRequest学习(二)

    Handling compressed responses, and compressing request bodies Using gzip to handle compressed respon ...

  2. Elasticsearch教程(五) elasticsearch Mapping的创建

    一.Mapping介绍 在Elasticsearch中,Mapping是什么? mapping在Elasticsearch中的作用就是约束. 1.数据类型声明 它类似于静态语言中的数据类型声明,比如声 ...

  3. android SQLite(单词的添加与查询应用)

    本人小白,刚接触android,为方便记忆,将平时练习的代码写下来,跟大家分享,也希望大神批评指正. 这个实例主要用到的SQLite数据库的操作,可以向数据库添加单词,查询,修改以及删除单词,描述如有 ...

  4. android 4.0 禁用系统home键

    2.2 禁用系统home键.这里不说了. 近期项目有一个需求,禁用系统的全部键.像menu, home, back.同一时候还要是想点击响应与view的弹出. 就是UI这部分要正常. back键我们自 ...

  5. SQL语句练习手册--第四篇

    一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...

  6. CDN原理实现详情

    CDN真是个好东西,但是究竟是怎么实现的呢, 学习下吧 首先浏览器发起请求 Dns解析寻找服务器资源 使用CDN加速的内容会被放到不同的服务器上 根据用户的请求来判断 -- 算了表达不清楚,看图吧! ...

  7. 小猪的Git使用总结

    小猪的Git使用总结 文件夹 小猪的Git使用总结 安装配置与文档 下载安装 文档教程相关 概念 Git的四个组成部分 文件的几个状态 Git与SVN版本号版本号控制存储差异 每次Commit时仓库中 ...

  8. CSS字体中英文名称对照表(转)

      在css文件中,我们常看到有些字体名称变成了乱码,这是由于网页开发者将中文字体的名字直接写成了中文,而css文件本身没有声明字符编码方式,查看时就出现了乱码.为了避免这种乱码状况出现,可以将css ...

  9. jmeter压测-负载配置

    jmeter 压测 一般压测的时间是10-15分钟 TPS:服务端每秒钟处理的请求数  越大越好 响应时间 :越短越好 并发用户数  也就是多少并发 指标给你:tps要达到多少 响应时间要达到多少 并 ...

  10. mngoDB 常用语法

    http://topmanopensource.iteye.com/blog/1278812### 连接写法:[IP地址:端口号] mongo 192.168.1.161:27017; show db ...