有关于C#索引器,感觉用了索引器之后,就是可以避免用传统的new实例点方法名的方式了
如:
传统:
DayCollection week = new DayCollection();
System.Console.WriteLine(System.Convert.ToString(week.GetDay("Fri")));
用了索引器之后
DayCollection week = new DayCollection();
System.Console.WriteLine(week["Fri"]);
// Using a string as an indexer value class DayCollection { string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" }; // This method finds the day or returns -1 private int GetDay(string testDay) { int i = 0; foreach (string day in days) { if (day == testDay) { return i; } i++; } return -1; } // The get accessor returns an integer for a given string public int this[string day] { get { return (GetDay(day)); } } } class Program { static void Main(string[] args) { DayCollection week = new DayCollection(); System.Console.WriteLine(week["Fri"]); System.Console.WriteLine(week["Made-up Day"]); } }
-----------------------------------------------------------------
New 修饰符:
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,
请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
public class MyBaseC { public int x; public void Invoke() {} }
在派生类中用 Invoke
名称声明成员会隐藏基类中的 Invoke
方法,即:
public class MyDerivedC : MyBaseC { new public void Invoke() {} }
但是,因为字段 x
不是通过类似名隐藏的,所以不会影响该字段。
在同一成员上同时使用 new 和 override 是错误的。
-----------------------------------------------------------------
server.Transfer方法提供了跨页面提交的支持。
1.在页面1中设置要跨页提交的属性
2.当单击按钮的时候,数据从页面1提交到页面2
3.页面2接收页面1所有的ViewState
4.如果PreviousPage可以访问,则为页面1从新提供一个实例
5.页面1从新进行初始化操作
6.此时页面2才可以访问页面1中的数据
有些情况下,应用程序需要在页回发至服务器后仍保留它在浏览器中的位置。
ex:
如果数据项导致大型页回发,则最终用户需要将页滚动到此前正在编辑它们的位置,才能继续。
页开发人员通过以下方法可以简单地标记窗体,
以维持滚动位置:
在@Page指令中将MaintainScrollPositionOnPostBack属性设置为true,
或在web.config中进行此设置,以应用于应用程序中的所有页。
MaintainScrollPositionOnPostBack
就是在刷新页面之后保持当前浏览内容的位置。
用于控件的一个令人惊喜的新功能是“客户端回调”,
该功能允许控件向服务器执行带外请求以获取附加数据,而不发送整页。
此功能依赖于用于回调处理(通常通xmlhttp)的浏览器支持,
该支持由SupportsClientCallBacks在浏览器功能中指定情况下,
页自身将实现ICallbackEventHandler接口,以用于演示用途。
------------------------------------------------------------------------------------internal:
内部成员只有在同一程序集中的文件内才是可访问的,
内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,
而不必向应用程序代码的其余部分公开.
* 尽管不能用 C# 重写 internal virtual 方法,但可以用某些语言(如使用 Ilasm.exe 的文本 Microsoft 中间语言 (MSIL) 重写它。