深入熟悉C# (待续)

有关于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) 重写它。



原文地址:https://www.cnblogs.com/RuiLei/p/385771.html