.net面试题1-4

9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 
答:不是。可以用任意类型

具体资料参考:http://www.isstudy.com/cjc/1373.html

摘要: 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式

 

索引器
索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。
声明类或结构上的索引器时,可以使用this关键字,信息:网站源代码例如:

 public int this[int index]    //声明索引器
{
// get and set 访问
}
索引器的修饰符有new、public、protected、internal、private、virtual、sealed、override、abstract和extern。当索引器声明包含extern修饰符时,称该索引器为外部索引器。因为外部索引器声明不提供任何实际的实现,所以它的每个访问器声明都由一个分号组成。
索引器的签名由其形参的数量和类型组成。它不包括索引器类型或形参名。如果在同一类中声明一个以上的索引器,则它们必须具有不同的签名。
索引器值不归类为变量,因此,不能将索引器值作为ref或out参数来传递。
下面用一个例子来说明如何声明和使用索引器。
在本示例中,定义了一个泛型类,并为其提供了简单的get和set访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。代码如下:
 class SampleCollection<T>
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
下面讲解如何使用上述代码实现的索引器,信息: 网站源代码具体代码示例如下:
 class Program
{
static void Main(string[] args)
{
SampleCollection<string> 锁 = new SampleCollection<string>();
s[0] = "索引器的使用";
System.Console.WriteLine(锁[0]);
}
}
C# 并不将索引类型限制为整数。例如,对索引器使用字符串可能是有用的。通过搜索集合内的字符串并返回相应的值,可以实现此类索引器的功能。由于访问器可被重载,字符串和整数版本可以共存。

 

Hashtable ht = new Hashtable();
ht[object]=object;

 

例如:
//这种设计仅供教学^_^
class 例子
{
public int a, b, c;
public int this[string 字]
{
get
{
if (字 == "a") return a;
if (字 == "b") return b;
if (字 == "c") return c;
throw new Exception("...");
}
set
{
if (字 == "a") a = value;
else if (字 == "b") b = value;
else if (字 == "c") c = value;
else throw new Exception("...");
}
}
}

 

例子2:http://blog.sina.com.cn/s/blog_4baa3af3010009zc.html

 

10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m 
答: 
int Num = this.TextBox1.Text.ToString() ; 
int Sum = 0 ; 
for (int i = 0 ; i < Num + 1 ; i++) 

if((i%2) == 1) 

Sum += i ; 

else 

Sum = Sum - I ; 


System.Console.WriteLine(Sum.ToString()); 
System.Console.ReadLine() ;

 

方法1:直接循环 内部判断奇偶即可

方法2:2个为1对 结果 -1 只需判断M为奇偶  偶就=-M/2 奇就为=-(M-1)/2+M=(M+1)/2

方法3:未想出,四海兄弟们有想到的请告诉一声

 

11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 
答:一般为3层 
数据访问层,业务层,表示层。 
数据访问层对数据库进行增删查改。 
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。 
表示层为了与用户交互例如用户添加表单。 
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 
缺点: 增加成本。

 

12.在下面的例子里 
using System; 
class A 

public A() 

PrintFields(); 

public virtual void PrintFields(){} 

class B:A 

int x=1; 
int y; 
public B() 

y=-1; 

public override void PrintFields() 

Console.WriteLine("x={0},y={1}",x,y); 

当使用new B()创建B的实例时,产生什么输出? 
答:X=1,Y=0;

在执行B的构造函数前会先执行A的构造函数

 

 

你可能感兴趣的:(.net面试题1-4)