您的位置:首页 > 职场人生

2016/3/17面试的总结

2016-03-18 00:30 519 查看
1.private 、procted、public 、internal 访问的权限:

       private  私有成员, 在类的内部才可以访问。 

       protected  保护成员,该类内部和继承类中可以访问。 

      public  公共成员,完全公开,没有访问限制。 

      internal 在同一命名空间内可以访问。

2.string与stringbuilder类的区别:

        string的缺点是每次字符串变量的内容发生了改变时,都必须重新分配内存。你想想,如果创建一个迭代100000次的循环,每次迭代都将一个字符连接到字符串,这样内存中就会有100000个字符串,每个字符串仅仅与前一个字符串相伴只是有一个字符不同,性能影响是很大的。StringBuilder通过分配一个缓存,就是一个工作区来解决这些问题,在工作区中队字符串应用StringBuilder类的相关方法。包括添加,删除,移除,插入和替换字符等等。执行完之后,将调用ToString方法把工作区中的内容转换为一个字符串,方便赋给一个字符串变量。这样StringBuilder会提升一些性能。 

3 stringBuilder的用法

企业项目中用的比较多,经常SQL连接。StringBuilder的对象是动态的,可以改变字符串的内容。StringBuilder修改字符串内容的方法。

1:StringBuilder.Append()。将内容追加到当前StringBuilder字符串的结尾。

   StringBuilder MySB = new StringBuilder("您好!");    MySB.Append(" 大家好!");    Console.WriteLine(MySB); 

2:StringBuilder.AppendFormat()。用一个带格式文本来代替字符串要传递的符号。

   int MyMoney = 24;    StringBuilder MySB = new StringBuilder("欠我的钱是 ");    MySB.AppendFormat("{0:C} ", MyMoney);    Console.WriteLine(MySB); 

3:StringBuilder.Insert(int,string)。将字符串和对象插入到当前StringBuilder字符串的指定位置。

4:StringBuilder.Remove(p,n)。在当前StringBuilder对象中移除指定的字符,就是说从p位置开始删除n个字符。

5:StringBuilder.Replace(a,b)。就是用b替换a指定字符串,a和b都是字符或字符串。

   string a="aaa aaa aaa";

   string b=a.Replace(‘a’,‘w’);

   结果输出“www www www”。

上面这几种方法string也是用的,甚至比StringBuilder还要多一些。多出来的有如下:PadRight()/PadLeft()方法,根据指定宽度,用相应的个数给定字符天才字符中,如果未指定填充字符,则使用空白符来填充。

  string a="abcdefg";

  a=a.PadRight(a.Length+3,"!");

  结果输出“abcdefg!!!”。

Split(char[])方法,char数组包含分隔符,可用将字符串分割为子串,这些子串将作为一个字符串数组中的元素返回。

Substring()方法,从指定的位置N开始抽取指定的长度串,如果指定为1,就抽取长度为1的子串。

ToUpper()/ToLower(),返回字符串的大小写形式的副本。

Trim()/Trim(char[]),删除字符串中所有的空白符,如果提供的是一个char数组,则删除这个char数组指定的前导和结尾字符。

TrimEnd(char[])/TrimStart([]),删除char数字指定的所有前导和末尾的字符,如果数组是null,则删除空白符。

ToCharArray()/ToCharArray(n,1),从字符串中抽取字符,并将它放入一个Unicode字符数组中

4 foreach 遍历数组需要满足实现哪一个接口或者实现什么样的方法

答案:能用foreach遍历访问的对象必须是集合或数组对象,而这些都是靠实现超级接口IEnumerator或被声明 GetEnumerator 方法的类型

问:

但是我在平常使用foreach in 的时候都是直接用的呀,也没出什么问题呀。请问,这是为什么呢。 如果按题目中问的那样去实现超级接口IEnumerator或被声明 GetEnumerator 方法的类型,应该怎样去做呢? 谢谢

答:平常使用foreach in 的时候都是用的系统定义好的集合类(实现ICollection接口)。比如 arrayList,stringDictionary ,数组等。这些是平台封装好的,已近实现了IEnumerator 接口了。要让自己写的类也能时候foreach 就必须 在编写类的时候实现该接口。这样就可以事后foreach遍历了。比如 定义一个 people 的类,实现了IEnumerator接口。有一个数组 People[] tempPeople ,那么 就可以用: foreach( p in tempPeople){ 
console.writeline(p.name);}这样就免去了用for 循环的麻烦。至于怎么样去实现Iemumerator接口。查一下MSDN 就可以啦。

5 float d=-123.45f ;则((int)d)=-123

6  c# 所有的类继承的类是什么?

一、类Object简介

1、类Object是 .NET Framework 中所有类、结构、枚举和委托的最终基类。

2、C#通常不要求类显示声明从 Object 的继承,因为继承是隐式的。

3、因为 .NET Framework 中的所有类均从 Object 派生,所以 Object 类中定义的每个方法可用于系统中的所有对象。 派生类也可以重写这些方法中的某些。

二、方法:

(1)public Type GetType()

返回与对象实例的类型对应的System.Type类型的一个对象。

Type类:表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。

示例:

DateTime dt1 = new DateTime(2009, 3, 3);

Console.WriteLine(dt1.GetType());

Type t = dt1.GetType();

Console.WriteLine(t);

输出结果: 


 

(2)protected Object MemberwiseClone()

创建当前 Object 的浅表副本。引用被复制,但被引用类型中的数据不会被复制。

 

(3)public static bool ReferenceEquals(Object objA, Object objB)

如果指定的两个参数 引用同一个对象或指定的两个参数都为NULL,返回值为true。

 

(4)public static bool Equals(Object objA,Object objB)

(5)public virtual bool Equals(Object obj)

(6)public virtual string ToString()

ToString 是 .NET Framework 中主要的格式化方法。 它将对象转换为其字符串表现形式。其默认实现返回 Object 的类型的完全限定名

(7)public virtual int GetHashCode()

返回当前 Object 的哈希代码。哈希代码是一个用于在相等测试过程中标识对象的数值。 它还可以作为一个集合中的对象的索引。

GetHashCode 方法适用于哈希算法和诸如哈希表之类的数据结构。

GetHashCode 方法的默认实现不保证针对不同的对象返回唯一值。 而且,.NET Framework 不保证 GetHashCode 方法的默认实现以及它所返回的值在不同版本的 .NET Framework 中是相同的。 因此,在进行哈希运算时,该方法的默认实现不得用作唯一对象标识符。

GetHashCode 方法可以由派生类型重写。 值类型必须重写此方法,以提供适合该类型的哈希函数和在哈希表中提供有用的分布。 为了唯一性,哈希代码必须基于实例字段或属性(而非静态字段或属性)的值。

用作 Hashtable 对象中键的对象还必须重写 GetHashCode 方法,因为这些对象必须生成其各自的哈希代码。 如果用作键的对象不提供
GetHashCode 的有用实现,您可以在构造 Hashtable 对象时指定哈希代码提供程序。

(8)protected virtual void Finalize()

允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。C#禁止直接调用这个方法。

注意:以上所有方法都通过继承为所有对象提供。即使是字面值(文字常量),也支持这些方法。

例如42.ToString()虽然看起来很怪但实际上是合法的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# c#试题