一、在C#中委托是什么?事件是什么?
答:(1)C#中事件:事件时属于类的成员,所以要放在类的内部。
(2)委托属于一个定义,是和类、接口类似的,通常放在外部。(因为大多数委托都要被重用)
委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分,且用public修饰,便于外部调用。若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用,频繁调用的情况下不合适。
事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能=。事件内部就是一个private的委托和add、remove两个方法。
二、C#一维数组转二维数组方法
答:
/// <summary>
/// 一维数组转为若干行的2维数组
/// </summary>
public static T[,] OneD_2<T>(T[] obj,int len)
{
if (obj.Length % len != 0)新旧数组元素个数必须一样
int width = obj.Length / len;//定义列数
T[,] obj2 = new T[len, width];//创建新数组
for (int i = 0; i < obj.Length; i++)
{
obj2[i / width, i % width] = obj[i];//转换
}
return obj2;
}
三、C#二维数组转一维数组方法
答:
/// <summary>
/// 二维数组转一维数组
/// </summary>
public static T[] TwoD_1<T>(T[,] obj)
{
T[] obj2 = new T[obj.Length];//定义新数组
for (int i = 0; i < obj.Length; i++)
obj2[i] = obj[i / obj.GetLength(1), i % obj.GetLength(1)];//转换
return obj2;
}
四、什么是相对路径?什么是绝对路径?
答:
-
绝对路径:从盘符开始的路径,这是一个完整的路径。以
"/"
开头的路径。 -
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。不以
"/"
开头的路径。./
表示当前路径,即:action="./handler_login.do" 和 action="handler_login.do"都表示当前路径。../
表示当前路径的父级路径。
五、什么是Json?
答:Json是一种轻量级的数据交换格式。常用于跨应用数据交互或者本地数据持久化,比如客户端服务器信息传输以及游戏存档或数据表,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。什么是JSON