.NET面试必备知识点:访问修饰符、页面传值与委托解析

需积分: 12 5 下载量 62 浏览量 更新于2024-07-27 收藏 209KB DOC 举报
“这是一份详尽的.NET面试题集,涵盖了C#和ASP.NET的相关知识点,包括访问修饰符、页面间传递值、委托概念、递归算法、方法重载与覆盖,以及在B/S架构中处理变量传递的问题。” 在.NET框架中,C#语言提供了四种访问修饰符来控制类成员的访问权限: 1. `private`:私有成员,只能在定义它们的类的内部访问,外部无法直接访问。 2. `protected`:保护成员,允许在定义它们的类及其子类内部访问。 3. `public`:公共成员,对所有代码开放,无访问限制。 4. `internal`:内部成员,只允许在同一命名空间内的类访问,提供了封装性。 ASP.NET页面间传递值的方法多样,包括: 1. 使用`QueryString`:通过URL附加参数,例如`?id=1`,然后在目标页面解析获取。 2. 使用`Session`变量:将值存储在服务器端的会话对象中,适用于跨页面持久存储数据。 3. 使用`Server.Transfer`:服务器端直接转移请求,保留原始请求状态,用户不会看到URL变化。 4. 使用`ViewState`:在页面回发时保持状态,但仅限于页面内部。 5. 使用`HiddenField`:在HTML隐藏字段中存储数据,适用于少量数据且不希望客户端可见的情况。 C#中的委托是一种类型,它代表了一组方法的签名,可以将方法当作参数传递,也可以用来实现事件。事件是特定类型的委托,通常用于订阅和发布事件,是多播委托,可以关联多个事件处理方法。 关于`override`与重载的区别: 1. 重载(Overloading):发生在同一类或子类中,通过方法名相同但参数列表不同来区分不同的方法,如参数数量、类型或顺序的差异。 2. 覆盖(Overriding):发生在继承关系中,子类重新定义父类的虚方法,以提供更适合子类行为的实现,需要使用`override`关键字。 在B/S(浏览器/服务器)架构下,若不能使用Session、Cookie和Application,还有其他传递变量的方法: 1. 使用`ViewState`:虽然它默认可用,但在这种场景下可作为一个选择,但需注意性能影响。 2. 使用`TempData`:ASP.NET MVC框架提供的临时数据存储,只在一次请求之间有效。 3. 利用查询字符串(QueryString)或URL重写技术传递。 4. 将数据编码为HTML隐藏字段,然后在目标页面解码提取。 5. 使用自定义HTTP头部,在HTTP请求头中携带信息。 6. 如果可行,可以考虑使用服务器之间的通信机制,如消息队列(Message Queue)或服务总线(Service Bus)。 最后,遍历ASP.NET页面上的所有TextBox控件并赋值为`string.Empty`的示例代码: ```csharp foreach (Control ctrl in this.Page.Controls) { if (ctrl is TextBox) { ((TextBox)ctrl).Text = string.Empty; } else if (ctrl.HasControls()) { foreach (Control childCtrl in ctrl.Controls) { if (childCtrl is TextBox) { ((TextBox)childCtrl).Text = string.Empty; } } } } ``` 这段代码递归地遍历页面及子控件,找到TextBox控件并清空其文本内容。