C#编程基础
来源:互联网 发布:软件项目经理 编辑:程序博客网 时间:2024/05/30 05:01
简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
C#预定义的值类型和预定义的引用类型有哪些
C#预定义的值类型,主要包括5个类型:
整型、浮点类型、字符型、bool型、decimal型。
预定义的引用类型共2个:
分别是Object类型和String类型
如何解决装箱和拆箱引发的性能问题
装箱是指将一个值类型转换为一个Object类型 或 转换成被该值类型应用的接口类型
拆箱是指将一个引用类型转换为一个值类型
解决办法是在程序中大量使用泛型进行替代
有几种方法可以判断值类型和引用类型
值类型在栈中分配,数据定义就按照所需分配好,存取效率高
引用类型在堆中分配,类和结果都属于引用类型。
值类型继承System.ValueType、反之引用类型不继承。
C#变量作用域
变量的作用域是指可以访问该变量的代码区域。
C#有几种方法传递参数
有4种方法传递参数
传值:Value,形参是实参的复制,不会影响实参在内存中的值
传址:将参数按引用进行传递,传参前必须初始化
输出参数:按引用进行传递,不需初始化,可以将多个参数回调给调用方法
数组参数:允许传不确定参数的数量
简述C#中Main方法
Main方法是程序的入口点,程序从此开始,也从此结束,一个C#程序中,Main()方法有且只能有一个
列举System.Collections中常用的成员
常用类:
ArrayList、可动态增加的数组实现
Hashtable、表示键/值对的集合
SortedList、表示键/值对的集合,可按照键和索引访问
常用接口:
ICollection、定义所有非泛型集合大小、枚举数和同步方法
IEnumerable、公开枚举数,支持在非泛型集合简单迭代
IList、按照索引单独访问对象非泛型集合
C#提供了哪几种循环结构
提供 do ---while 循环、while循环、for循环、foreach循环。
前两种经常用在不确定循环次数场合
For用于已知循环次数的操作
Foreach循环用于已知集合的循环操作
StringBuilder与String有哪些区别
String:是引用类型、对象一旦生成,就不可改变,每次运算时会产生一个新的实例。
StringBuilder:对象是动态对象,允许修改封装字符串的字符数量。
在拼接许多字符串操作上,StringBuilder类效率更高;
少量字符串拼接操作上,String类更方便,扩展了许多字符串处理方法。
Hashtable几种常用遍历方法
Hashtable键值必须是唯一,无有效的排序
Hashtable共有4种遍历方法;
1、遍历哈希表中的键,
Foreach(string key in hashtable.keys){}
2、遍历哈希表中的值,
Foreach(EmpInfor emp in hashtable.Values){}
3、遍历哈希表中的键值,其键值为DictionaryEntry对象
Foreach(DictionaryEntry DE in hashtable){}
4、遍历哈希表中的键值,其键值为IDictionaryEnumerator对象
While(myEnum.MoveNext()){}
C#中String和string的区别
String是String类型的一个别名,两者没有任何区别,在系统中尽量统一使用关键字
是否可以继承String类?
String类是final类故不可以继承。
Array与ArrayList的区别
相同点:
Array和ArrayList所创建的对象都放在托管堆中
Array和ArrayList都具有索引,可以通过index来直接获取和修改任意项
Array和ArrayList都可以对自身进行枚举,都实现了IEnumerable接口
不同点:
命名空间不同:Array位于system,ArrayList位于system.collections
变量声明不同:Array声明同时必须实例化数组大小不可改变,ArrayList只是先申 明,可以指定大小也可不指定,任意增加
设置下线不同:可以设置Array的下限,ArrayList下限始终为零
拥有维度不同:Array可以多维,ArrayList只能一维
存储对象不同:Array只能存储同构对象,ArrayList可以存储异构对象
存放方式不同:Array是始终连续存放,ArrayList存放不一定连续
设置项不同: Array不能随意添加删除,ArrayList可任意插入删除
Array转换到ArrayList
Array转换到ArrayList可定义转换函数或转换类
ArrayList orderList = ArrayList.Adapter(orderArray)
ArrayList转换到Array通过内置ToArray()方法,需进行强制类型转换
orderForm[] orderArrayList = (orderForm[])orderList.ToArray(typeof(orderForm));
C#中checked和unchecked的作用
Checked开启整型算术和显示转换的溢出检查
Unchecked取消整型算术运算和转换的溢出检查
C#中is运算符与as运算符
is检查对象是否给点类型兼容,返回值true false
As兼容引用类型之间是否能转换 返回null 引发异常
类和结构的区别
结构是值类型,使用struct关键字定义。类是引用类型
结构不能被继承,类可以被继承
结构没有默认的构造函数,也没有析构函数,不可使用protected修饰符,可以不可使用 new初始化,
类相反有默认构造函数,也有析构函数,还有protected修饰符,必须new初始化
C#中虚方法
虚方法用virtual关键字修饰,
虚方法可以再子类中被重写,并且必须提供子类覆盖方法的选项,必须有实现部分。
C#中密封类和密封方法
密封类使用sealed关键字进行修饰,密封类不能被继承不能做基类,
密封方法使用sealed关键字进行修饰,不影响类的继承,但可以防止重写基类中特定的虚方法
C#中静态类与构造方法
一个类中只允许一个无参的静态构造方法
静态方法不会被继承
构造方法在所有静态成员被引用前执行
所有构造方法静态构造方法最先被执行
override与重载的区别
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override 是进行基类中函数的重写。为了适应需要。
final 、override 、abstract、interface、 struct、 virtual、 sealed
Final:修饰符,类被声明为final,不能作为父类被继承。一个类不能既被声明为 abstract的,又被声明为final的。
变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量 必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法只能使用,不能重载。
Override: override 声明重写的方法称为重写基方法,重写的基方法必须是 virtual、abstract 或 override
Abstract:定义抽象类,抽象方法的关键字
Interface:定义接口的关键字
Struct:定义结构的关键字,结构不能被继承,结构没有默认的构造函数,也没有析构函数,不可使用protected修饰符,可以不使用new初始化。
Virtual:定义虚方法关键字,虚方法可以再子类中被重写,并且必须提供子类覆盖方法 的选项,必须有实现部分。
Sealed:密封类使用sealed关键字进行修饰,密封类不能被继承不能做基类,
密封方法使用sealed关键字进行修饰,不影响类的继承,但可以防止重写基类中特定的虚方法
C#中派生类的构造函数
关键字base调用基类中的构造函数,this调用本类中的构造函数
简述接口及接口继承
接口是把多个继承类中的公共对象部分抽象出来,并封装这些公共对象的行为。
接口只定义,不包含方法实现
接口可以包含方法、属性、事件和索引器
接口成员必须是公共的
接口不能直接被实例化
接口不能包含任何字段
接口可以多个接口继承
类和结构可从多个接口继承
继承接口的类必须实现接口中所有定义的成员对象
什么是事件机制
事件为一种特殊的委托
简述EventHandlerList的作用
EventHandlerList提供一个存储事件的集合,可以将某个类型中多个事件维护在集合中,而不需要独立的为何每一个事件
什么是委托
委托类都继承自System.Delegate类型
委托是一种可用于封装命名或诺明方法的引用类型
委托类似于函数指针,但类型是安全和可靠的
委托与事件的用法
public delegate void handels();//返回值是void,没有参数
public event handels eventHandels;
his.eventHandels = new handels(fun);
public void fun() { }
C#中被委托的方法必须是静态的吗
委托不仅能绑定静态方法,还可以绑定实例方法,
绑定实例方法时:Delegate.Target属性将会设置成指向该实例方法所属类型的一个实例 对象
绑定静态方法时:Delegate.Target属性将会被设置成null
多播委托
多播委托是指一个由委托串成的链表,
多播委托必须是同类型,返回类型必须是void,不可带输出参数,可带引用参数
当链表上的一个委托被回调时,后续会被顺序执行
abstract class和interface有什么区别
abstract 类:
声明方法的存在而不去实现,也可以有部分实现
不能多继承
抽象类中的方法不一定是抽象的
抽象方法有抽象类的子类去实现
抽象类必须实现所有抽象方法才能被实例化,否则实现父类中部分抽象方法,子类也必须定义为抽象类
(interface):
是抽象类的变体。所有方法都是抽象的
接口(interface):
是抽象类的变体。所有方法都是抽象的。
接口可多继承
继承接口的类必须实现接口中所有定义的成员对象
new有几种用法
new 运算符 用于创建对象和调用构造函数。
new 修饰符 用于隐藏基类成员的继承成员。
new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
- c#网络编程基础
- C#编程基础
- C#基础编程---累加
- C#基础编程---******
- C#基础编程---阶乘
- C#基础编程---九九乘法表
- C#基础编程---排序
- C#基础编程---润年
- C#基础编程---素数
- c#编程基础
- C#网络编程基础
- C# Socket编程基础
- C# TCP编程基础
- 1.C#编程基础
- C#编程--基础入门
- C#基础编程
- C#编程基础
- C#编程基础
- Linux16-Apache服务器的配置
- Extjs 4.2 树结点右键菜单(全选,反选,撤销)
- 解决myeclipse中struts2 bug问题包的替换问题
- string类成员函数c_str()介绍
- Builder(建造者模式)
- C#编程基础
- 数学趣味题(相邻同加同减问题)
- Objective-C 的“多继承”
- C++ Deque成员函数
- reader 订阅推荐
- LINUX 学习日记-2
- IntelliJ IDEA 基本配置入门
- (一)什么是高可用性解决方案?
- Android sqlite 数据库查询,插入,删除,更新demo<第1章>