孙展波:实现.NET无限潜力

Realize .NET Potential (中文版)
随笔 - 430, 评论 - 12203, 引用 - 54

导航

关于

贴子以"现状"提供且没有任何担保也没有授予任何权利。
计数器(2005/12/8起).点击阅读我的Blog In English

标签

每月存档

最新留言

广告

9个月以后Gmail会关闭休眠账户

以前一直以为Gmail的账号一直有效即使很少使用。这两天开始收到来自Gmail TeamYour Gmail account has been inactive for a long time的邮件,才注意到其明确的关闭休眠账户的政策。

 

http://mail.google.com/support/bin/answer.py?answer=6563:如果您长期不登录自己的帐户,我们就会将其标记为"休眠"。九个月后,Google 将删除该帐户内的所有邮件,并关闭该帐户,用户名也会被收回。(其他基于 Web 的免费电子邮件提供商在短短 30 天后就会删除休眠帐户。) 如果您的休眠帐户被删除,在您先前的用户名被收回后,我们将不能保证您还可以再使用该用户名。请务必定期登录 Gmail

 

对我来说,这个政策是个新闻,因为以前从来没有收到过类似的警告信。MSN的免费Hotmail的确是30 天后就会删除休眠帐户的邮件。但是,MSN并不回收用户名。

posted on 2005-06-26 02:02:00 by zhanbos  评论(8) 阅读(2721)

2005年Avalon有奖问答系列第一期

System.Windows.Input.Cursors中属性定义了一共19个系统支持的鼠标光标。为了加深理解,这里有一个简单的XAML的例子:

 

<Grid xmlns="http://schemas.microsoft.com/winfx/avalon/2005" xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005">

      <Grid.Resources>

            <Style TargetType="{x:Type Button}">

                  <Setter Property="Margin" Value="1"/>

                  <Style.Triggers>

                        <Trigger Property="IsMouseOver" Value="True">

                              <Setter Property="Background" Value="LightGreen"/>

                        </Trigger>

                  </Style.Triggers>

            </Style>

      </Grid.Resources>

      <ColumnDefinition />

      <ColumnDefinition />

      <ColumnDefinition />

      <ColumnDefinition />

      <RowDefinition Height="Auto"/>

      <RowDefinition Height="Auto"/>

      <RowDefinition Height="Auto"/>

      <RowDefinition Height="Auto"/>

      <RowDefinition Height="Auto"/>

 

      <Button Grid.Row="0" Grid.Column="0" Name="None"/>

      <Button Grid.Row="0" Grid.Column="1" Name="No"/>

      <Button Grid.Row="0" Grid.Column="2" Name="Arrow"/>

      <Button Grid.Row="0" Grid.Column="3" Name="AppStarting"/>

 

      <Button Grid.Row="1" Grid.Column="0" Name="Cross"/>

      <Button Grid.Row="1" Grid.Column="1" Name="Help"/>

      <Button Grid.Row="1" Grid.Column="2" Name="IBeam"/>

      <Button Grid.Row="1" Grid.Column="3" Name="SizeAll"/>

 

      <Button Grid.Row="2" Grid.Column="0" Name="SizeNESW"/>

      <Button Grid.Row="2" Grid.Column="1" Name="SizeNS"/>

      <Button Grid.Row="2" Grid.Column="2" Name="SizeNWSE"/>

      <Button Grid.Row="2" Grid.Column="3" Name="SizeWE"/>

 

      <Button Grid.Row="3" Grid.Column="0" Name="UpArrow"/>

      <Button Grid.Row="3" Grid.Column="1" Name="Wait"/>

      <Button Grid.Row="3" Grid.Column="2" Name="Hand"/>

      <Button Grid.Row="3" Grid.Column="3" Name="Pen"/>

 

      <Button Grid.Row="4" Grid.Column="0" Name="ScrollWE"/>

      <Button Grid.Row="4" Grid.Column="1" Name="ScrollSE"/>

      <Button Grid.Row="4" Grid.Column="2" Name="ArrowCD"/>

</Grid>

 

这个XAML可以在XamlPad中看到其效果。目前只能看到19个空白的Button。而当移动鼠标经过某个Button的时候,其背景颜色会改变。

 

请在现有的Style的基础上,通过只修改Style的定义,使得:

  1. 每个Button不再空白,而是显示其Name,即19个系统支持的鼠标光标名称。
  2. 当移动鼠标经过某个Button时,鼠标的光标成为其Name所指示的那一个。

 

您只需要将Style的定义部分填写在回复中即可。本期奖品是Effective C#这本书。注意,所有的奖品将在Avalon有奖问答系列全部结束后一起寄出。您需要一个在国内的通讯地址。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

posted on 2005-06-16 10:33:00 by zhanbos  评论(24) 阅读(3924)

6月16日:Avalon有奖问答系列第一期

为了热烈祝贺众多朋友纷纷喜结良缘,为了庆祝Visual Studio 2005/.NET 2.0将会在2005年正式发行,为了展望PDC 2005, Tech Ed China 2005在今年9月隆重举行,等等等,本Blog将从6/169/19不定期推出Avalon有奖问答系列。

 

虽然是不定期,以下几个容易记忆的日期将是确定的:616日,717日,818日,919日。每次都会有一位读者获奖,除非没有人回答或者没有人答对。

 

题目公布的时间力争在上午的1015分左右。

 

616日只有一道题目,在一个Xaml文件之中,除了对ButtonStyle定义留有空白需要您填充外,其他的部分已经给定并且不能修改。您的问题是填充Style的定义以达到届时提出的效果。

 

6/16做准备,您需要安装Avalon Beta1 RC,并且使用XamlPad测试你的Xaml

 

6/16的奖品是Effective C#这本书。注意,所有的奖品将在Avalon有奖问答系列全部结束后一起寄出。您需要一个在国内的通讯地址。

 

感谢每位朋友自去年3月以来的热情支持和参与,本Blog将百尺竿头,更进一步。

posted on 2005-06-13 08:35:00 by zhanbos  评论(6) 阅读(4073)

Avalon FAQ 101-102

101:哪些值可以用作Resources中的Key?

答:String, LiteralExtension, TypeExtension StaticExtension可以作为Resources中的Key

 

102{x:Null}因为被解释为NullExtension而不可以作为Key值。我如何能向Parser指明将{x:Null}理解为String而不是MarkupExtension?

答:使用{}这个转义符。以下为一正确的Xaml示范。

 

<Grid xmlns="http://schemas.microsoft.com/winfx/avalon/2005" xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005">

    <Grid.Resources>

        <SolidColorBrush Color="LightBlue" x:Key="{}{x:Null}"/>

    </Grid.Resources>

    <Button Content="Sample 102" Background="{StaticResource {}{x:Null}}"/>

</Grid>

 

尝试将{}去掉,您将得到一个解释器的错误信息。其内容正是101的回答。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

posted on 2005-06-13 07:48:00 by zhanbos  评论(4) 阅读(2431)

调用Object.GetHashCode的缺省实现

所有的.NET类都是基于System.Object类的。在Object中定义了返回值为int的虚函数GetHashCode。因为是虚函数,子类可以重写(override)GetHashCode以体现更合逻辑的算法。但是,重写后的GetHashCode可能会产生比较集中占用了Int32的狭窄区间的Hash Code(哈希值),使得更多的不同实例有着相同的值.

 

这样的实现一点也不违背长生Hash code的原则。在极端情形下即使所有的实例的哈希值都是相同的,这也是合法的算法。当然也是很差的算法。

 

Object.GetHashCode的缺省实现则有着很好的哈希值分布。在实践中人们常发现一个实例的Hash Code几乎可以有和这个实例有一一对应的关系。也就是说,这是一个很佳的哈希算法。

 

问题是,当GetHashCode被子类重写后,我们如何能够在需要的情形下调用Object.GetHashCode的缺省实现呢?答案是:

int System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(object o); 这是定义在程序集mscorlib之中的。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

posted on 2005-06-13 06:04:00 by zhanbos  评论(8) 阅读(3462)

.NET 2.0: Thread.Suspend和Thread.Resume被废弃(obsolete)

实例函数(Instance Method)Thread.SuspendThread.Resume2.0版本下被标为obsolete. 编译使用这2个函数的代码会得到warning. 当然在以后的.NET版本下可能就会是编译错误了。

 

其警告信息包含下列信息:Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. (请使用System.Threading中的其他类,如Monitor, Mutex, Event, Semaphore,以同步线程和保护资源。)

 

Thread.SuspendThread.Resume被废弃的主要原因是因为其使用很容易造成线程死锁(Deadlock)

 

静态函数(Static MethodThread.Sleep的使用在.NET 2.0下不受影响。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

posted on 2005-06-13 05:05:00 by zhanbos  评论(8) 阅读(4767)

.NET 2.0: 新增StringComparison枚举型

System.StringComparison用于String.CompareString.Equal的相关函数之中,对于常用的字符串比较操作,提供了更简便的支持。

 

其枚举值包括:CurrentCulture, CurrentCultureIgnoreCase, InvariantCulture, InvariantCultureIgnoreCase, Ordinal, 和OrdinalIgnoreCase.

 

2.0之前使用的代码如:

String.Compare(mimeType, "image/jpe", true, CultureInfo.InvariantCulture)

就可以写成:

String.Compare(mimeType, "image/jpe", StringComparison.InvariantCulture);

 

使用StringComparison,既便于理解,又避免出错。

posted on 2005-06-10 15:31:00 by zhanbos  评论(2) 阅读(3646)

Powered by: Joycode.MVC引擎 0.5.2.0