在MSDN C#编程指南中,提到:
"A类成员,方法,字段,属性或事件,在被覆盖的基类的虚拟构件可以声明构件作为密封的派生类".
我理解上面的方法,属性和事件的声明,但上面的语句如何对类的字段有效?我在一个程序中尝试了这个并验证了一个字段不能是虚拟的,因此不能被覆盖.那怎么能被密封呢?如果它不能,那么来自MSDN参考的上述声明是否应该省略提及字段?
谢谢.
在大多数TCP PUSH功能的描述中,提到PUSH功能不仅要求发送方立即发送数据(不等待其缓冲区填充),还要求将数据推送到接收方的接收应用程序.一边,没有缓冲.
我不明白为什么TCP会在接收端缓冲数据?毕竟,TCP段在IP数据报中传播,IP数据报全部处理(即,在对任何给定段进行任何必要的IP数据报片段重组之后,IP层仅将整个段传送到TCP层).那么,为什么接收TCP层会等待将这些数据传递给它的应用程序呢?一个案例可能是应用程序在那个时间点没有读取数据.但是,如果是这种情况,那么无论如何强行将数据推送到应用程序是不可能的.因此,我的问题是,为什么PUSH功能需要指示接收器端行为的任何内容?鉴于应用程序在段到达时正在读取数据,无论如何应该直接将该段传递给应用程序.
谁能帮助解决我的疑问?
我期望以下几行代码抛出一个异常,因为我正在访问Value一个可赋值为null的可变变量的属性null.但是,当我执行以下操作时,我没有任何异常:
int? x=null;
Console.WriteLine(x.Value==null);
Run Code Online (Sandbox Code Playgroud)
但当我这样做时:
Console.WriteLine(x.Value);
Run Code Online (Sandbox Code Playgroud)
我确实得到了一个例外,正如可以预料的那样.
但是两种访问方式有什么区别x.Value?为什么我在第一种情况下没有例外?毕竟两段代码都试图访问x.Value属性.
注意:我在www.compileonline.com网站上运行上面的代码,顺便说一句.不确定尝试使用Visual Studio编译器会产生不同的结果,但我目前无法访问Visual Studio.
TIA.