




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题11. 结合教材中图1.1.2所示,说明.NET Framework的组件构成,并解释每个组件所实现的功能。Web Forms提供一组网页设计的类,Web Forms与HTML表单类似;Web Services包括一组设计web服务的类,可用来购造网络服务的应用程序;WinForms提供一组Windows的窗体应用程序设计和开发的类;ASP.NET提供一组用于创建Web应用程序的类;ADO.NET提供一些可与数据库进行交互的类;XML类启用XML操纵、搜索和转换;基本框架类(FCL)提供基本功能,如输入输出、字符串操纵、安全性管理和网络通信等;通用语言规范(CLS Common Language specification)规定了使用所有语言都必须遵循的基本语言功能的公共子集;公共类型系统(CTS Common Type System)描述如何在运行时声明、使用和管理像类、结构、枚举、接口等类型,从而便于在各语言之间使用这些类型。2. 什么是.NET Framework?其设计目标是什么?与Windows平台以前的开发平台相比有哪些特点?NET Framework是一个平台,此平台支撑着本书中所要介绍的C#语言。同样,.NET Framework还支持许多其他的语言,如VB.NET,VC+.NET等等。该平台支持多种应用程序开发。除了典型的Windows窗体应用程序和控制台应用程序,还支持Web应用程序、Web服务等各种类型的应用程序。应用.Net Framework可以满足应用程序开发的大部分需要。.NET Framework 旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。 按照工业标准生成所有通信,以确保基于 .NET Framework 的代码可与任何其他代码集成。 3. 比较C#与Java语言的各自特点。Java对C#有深刻的影响,其语法非常类似,甚至Java类库和.NET基类的结构也非常的相似。并且它们都依赖于一个中间的运行环境。4. 为什么说C#是一种完全的面向对象编程语言?C#的面向对象技术已经成熟,且效率比较高。如支持良好的类结构,并对继承性有一定的限制,一个类可以从无数个类中继承接口,但只能从一个基类中继承其实现方法。C#采用一种更清晰的新语法来描述面向对象的多态性,即声明为“虚”、“纯虚”函数,特别是一个类可以先行提供方法执行方式,在该方法的前面加上abstract关键字,迫使其子类也这么做;而且可以创建不能继承的类,与C+一样,种类齐全的关键字可以严格控制类成员的访问权限。5. 在DOS命令行窗口中编译和运行一个简单的C#程序。项目中Program.cs的代码如下:/using表示程序引用的库,以下的System,System.Collections.Generic和System.Text为控制台应用程序默引用/的库,这几个库由.NET Framework 2.0中提供。using System;using System.Collections.Generic;using System.Text;/程序将以新建项目时填入的项目名称自动创建一个命名空间,即namespace,命名空间可以控制类,变量等的作/用域,以后将会讲到。类似于java中包的概念。namespace ConsoleHelloWorld /此处的class是类的意思,C#是一门面向对象的语言,所有的程序都由类构成。项目创建的时候,Visual Studio /2005将会自动创建这个Program类。关于面向对象的概念以后将会讲到。 class Program /任何一个可执行的程序中都包含一个Main函数,Main函数是程序的入口。程序启动时,将执行Main函 /数中的代码。 static void Main(string args) /输出Hello World! Console.WriteLine(Hello World!); / Console.ReadLine用于使程序在执行完上面的代码后不立即退出,在用户输入回车键之后才退出程 /序 Console.ReadLine(); 习题21下面哪个不是合法的变量名? AmyVariableIsGoodB99FlakeC_floorDtime2GetJiggyWidIt答:B,因为不能以数字开头。2字符串supercalifragilisticexpialidocious是因为太长了而不能放在string变量中吗?为什么?答:该字符串可以放在string变量中,因为对于string变量没有限定长度。3编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积。提示:可以考虑使用Convert.ToDouble()命令,该命令可以把用户在控制台上输入的数转换为double;从string转换为int的命令是Convert.ToInt32()。答:static void Main(string args) int firstNumber, secondNumber, thirdNumber, fourthNumber; Console.WriteLine(Give me a number:); firstNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); secondNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); thirdNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); fourthNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(The product of 0, 1, 2, and 3 is 4., firstNumber, secondNumber, thirdNumber, fourthNumber, firstNumber * secondNumber * thirdNumber * fourthNumber); 4如果两个整数存储在变量val1和val2中,该进行什么样的布尔测试,看看其中的一个(但不是两个)是否大于10?答:(var1 10) (var2 10)5编写一个应用程序,其中包含练习4中的逻辑,让用户输入两个数字,并显示它们,但拒绝接受两个数字都大于10的情况,并要求用户重新输入。答:static void Main(string args) bool numbersOK = false; double var1, var2; var1 = 0; var2 = 0; while (!numbersOK) Console.WriteLine(Give me a number:); var1 = Convert.ToDouble(Console.ReadLine(); Console.WriteLine(Give me another number:); var2 = Convert.ToDouble(Console.ReadLine(); if (var1 10) & (var2 10) Console.WriteLine(Only one number may be greater than 10.); else numbersOK = true; Console.WriteLine(You entered 0 and 1., var1, var2); 6下面的代码有什么错误? for(i =1; i = 10; i+) if(i % 2) = 0) continue; Console.WriteLine(i); 答:正确的代码为: int i;for (i = 1; i = 0; index-) reversedString += myStringindex; Console.WriteLine(Reversed: 0, reversedString); 10编写一个控制台应用程序,它接收个字符串,用“yes”替换字符串中所有的“no”。答:static void Main(string args) Console.WriteLine(Enter a string:); string myString = Console.ReadLine(); myString = myString.Replace(no, yes); Console.WriteLine(Replaced no with yes: 0, myString); 11编写一个控制台应用程序,给字符串中的每个单词加上双引号。答:static void Main(string args) Console.WriteLine(Enter a string:); string myString = Console.ReadLine(); string myWords = myString.Split( ); Console.WriteLine(Adding double quotes areound words:); foreach (string myWord in myWords) Console.Write(0 , myWord); 12下面两个函数都有错误,请指出这些错误。 static bool Write()Console.WriteLine(Text output from function.); static void myFunction(string label, params int args, bool showLabel)if (showLabel)Console.WriteLine(label);foreach (int i in args)Console.WriteLine(0, i);答:第1个函数要求返回一个bool类型的值,但函数体内没有return语句。第2个函数有一个参数数组,但是没有把它放在参数列表的最后。13编写一个应用程序,该程序使用两个命令行参数,分别把值放在一个字符串和一个整型变量中,然后显示这些值。答:static void Main(string args) if (args.Length != 2) Console.WriteLine(Two arguments required.); return; string param1 = args0; int param2 = Convert.ToInt32(args1); Console.WriteLine(String parameter: 0, param1); Console.WriteLine(Integer parameter: 0, param2); 14修改下面的结构,使之包含一个返回订单总价格的函数。 struct orderpublic string itemName;public int unitCount;public double unitCost;答:struct order public string itemName; public int unitCount; public double unitCost; public double TotalCost() return unitCount * unitCost; 习题31“必须手动调用对象的析构函数,否则就会浪费资源”,对吗?答:不是。我们可以用不调用对象的析构函数,因为.NET的运行环境。2需要创建一个对象以调用其类的静态方法吗?答:不需要,直接使用静态方法。3下面的代码有什么错误? public sealed class MyClass / class memberspublic class myDerivedClass : MyClass / class members答:myDerivedClass派生于MyClass,但MyClass是密封类不能派生。4如何定义不能创建的类?答:通过定义它的成员都是私有的。5为什么不能创建的类仍旧有用?如何利用它们的功能?答:不能创建的类可以使用其静态成员。实际上,我们可以通过这些静态成员获得一个实例,如下: class CreateMe private CreateMe() static public CreateMe GetCreateMe() return new CreateMe(); 6编写代码,用虚拟方法GetString()定义一个基类MyClsss。这个方法应返回存储在受保护的字段myString中的字符串,该字段可以通过只写公共属性ContainedString来访问。答:class MyClass protected string myString; public string ContainedString set myString = value; public virtual string GetString() return myString; 7从类MyClass派生一个类MyDerivdClass。重写GetString()方法,使用该方法的基类执行代码从基类中返回一个字符串,但在返回的字符串中添加文本“(output from derived class)”。答:class MyDerivedClass : MyClass public override string GetString() return base.GetString() + (output from derived class); 8 编写个类MyCopyableClass,该类可以使用方法GetCopy()返回它本身的一个副本。这个方法应使用派生干System.0bject的MemberwiseClone()方法。给该类添加一个简单的属性,并且编写使用该类检查任务是否成功执行的客户代码。答:class MyCopyableClass protected int myInt; public int ContainedInt get return myInt; set myInt = value; public MyCopyableClass GetCopy() return (MyCopyableClass)MemberwiseClone(); class Class1 static void Main(string args) MyCopyableClass obj1 = new MyCopyableClass(); obj1.ContainedInt = 5; MyCopyableClass obj2 = obj1.GetCopy(); obj1.ContainedInt = 9; Console.WriteLine(obj2.ContainedInt); 9创建一个集合类People,它是下述Person类的集合,该集合中的项目可以通过一个字符串索引符来访问,该字符串索引符是人的姓名,与Person.Name属性相同:public class Person private string name; private int age; public string Name get return name; set name = value; public int Age get return age; set age = value; 答:using System;using System.Collections;namespace Exercise_Answers public class People : DictionaryBase public void Add(Person newPerson) Dictionary.Add(newPerson.Name, newPerson); public void Remove(string name) Dictionary.Remove(name); public Person thisstring name get return (Person)Dictionaryname; set Dictionaryname = value; 10扩展上一题中的Person类,重载,=和(Person p1, Person p2) return p1.Age p2.Age; public static bool operator (Person p1, Person p2) return p1.Age =(Person p1, Person p2) return !(p1 p2); public static bool operator p2); 11给People类添加GetOldest()方法,使用上面定义的重载运算符,返回其Age属性的值为最大的Person对象数组(1个或多个对象,因为对于这个属性而言,多个项目可以有相问的值)。答:public Person GetOldest() Person oldestPerson = null; People oldestPeople = new People(); Person currentPerson; foreach (DictionaryEntry p in Dictionary) currentPerson = p.Value as Person; if (oldestPerson = null) oldestPerson = cu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园防溺水安全知识培训课件
- 2025中国安能集团科工有限公司春季校园招聘笔试题库历年考点版附带答案详解版
- 2025年物流快递行业物流快递智能化发展研究报告
- 2025年电子元件行业电子元件制造与供应链管理研究报告
- 2025年数字音频产业行业数字音频内容创作现状研究报告
- 2025年电子游戏行业电竞赛事及游戏直播市场规模与趋势研究报告
- 2025年餐饮行业餐饮文化与餐饮创新研究报告
- 2025年纺织服装行业环保材料应用研究报告
- 2025年区块链行业区块链技术应用案例与区块链数字资产交易研究报告
- 2025年互联网金融行业风险管理与合规挑战研究报告
- 锂电池安全培训课件
- 妇科护士进修汇报护理课件
- 消防验收竣工报告
- 高考英语1600个必考高频词汇
- 法院调令申请书范本
- GB/T 23451-2023建筑用轻质隔墙条板
- 驻足思考瞬间整理思路并有力表达完整版
- 第二章 盛唐诗歌边塞诗派公开课一等奖课件省赛课获奖课件
- 滚筒干燥机设计毕业设计
- 真空包装机作业指导书
- 2023年上海16区高考一模英语听力合集附音频含答案含原文
评论
0/150
提交评论