前言: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. Visual Studio Package扩展——vsct文件简介

    首先我们使用向导生成一个package的扩展,里面就会发现一个vsct文件.vsct文件的全称是Visual Studio Command Table,它其实就是一个xml文件,通过一定的规则来描述v ...

  2. Camera setParameters(), getParameters(),unlock()三个方法之间的限制关系

    Camera mCamera = Camera.open(); // 第一次调用getParameters()需要在unlock()方法之前否则出现错误 Camera.Parameters param ...

  3. 推荐一款Java反编译器,比较好用

    转自:http://www.blogjava.net/xmatthew/archive/2008/10/28/237203.html 推荐一款Java反编译器,也使用了挺久的了,感觉还是很好用,就拿出 ...

  4. Hash history cannot PUSH the same path; a new entry will not be added to the history stack

    这个是reactr-router的一个提示,当前路由下的history不能push相同的路径.只有开发环境存在,生产环境不存在,目前还没看到官方有去掉的意思.看不惯的话可以采取一些方法关掉这个提示.具 ...

  5. 上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)

    上一节实现了client像server端发送请求.本节将实现server端向client回传信息.实现原理非常easy,在原来的基础上.在server端实现输出流,在client实现输入流就可以,详细 ...

  6. nginx $document_uri 参数使用

    $document_uri  表示访问的url 现在我的需求是,访问 www.abc.com  请求到 www.abc.com/abc/在nginx配置文件中加入 if ($document_uri ...

  7. Spring注释事务失效及解决办法

    如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将service bean配置到xml文件中才行  在主容器中(applicationContext.xml),将C ...

  8. log4j教程 4、配置

    上一章介绍log4j的核心组件.本章介绍如何使用配置文件来配置这些核心组件.配置log4j涉及分配级别,定义追加程序,并在配置文件中指定布局的对象. log4j.properties文件是一个键 - ...

  9. zabbix2.2.22 升级3.0.18

      环境说明 系统版本 CentOS 7.2 x86_64 zabbix2.2.22界面如下 升级过程: 清除之前的zabbix的yum源缓存 [root@zabbix ~]# yum clean a ...

  10. ITIL,是否已是昨日黄花

    首先声明自己不是ITIL方面的专家,特别是具体的规范细节,后面论述如有不当,请指正.但我为什么会提起它?主要是因为它和运维(IT服务管理)相关性太大了.早起的运维完全就是以ITIL来蓝本构建的,在当时 ...