none
请教,最后两句代码的virtual是什么意思,另外类型Genre和属性Genre怎么一样,不会引起歧义吗? RRS feed

  • 问题

  •   public class Album
      {
        public int AlbumId { get; set; }
        public int GenreId { get; set; }
        public int ArtistId { get; set; }
        public string Title { get; set; }
        public decimal Price { get; set; }
        public string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }
      }
    
    
    2011年3月21日 22:13

答案

  • virtual 关键字,请参考:

    http://msdn.microsoft.com/zh-cn/library/9fkccyh4(v=vs.80).aspx

    最后2个不会引起歧义,因为属性定义,前一个就是属性的类型,后一个就是属性的名称,虽然名字相同,但位置决定了他们的含义不同



    理解的越多,需要记忆的就越少
    2011年3月22日 0:39
    版主
  • 您好,

    virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。例如,此方法可被任何继承它的类重写。

    而第一个Genre 是类型,第二个Genre 是变量名,所以不会有疑义。

    2011年3月23日 2:27
  • 你好

    上面两位答的很全了,我再加点。

    属性的命名规则应符合一般的命名规则,即公有的使用PascalCase规则,而非公有的使用camelCase规则。在上面的例子中,Genre属性是公有的,所以命名为Genre 而不是genre.

    所以出现2个Genre很符合要求的,不会有歧义。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月23日 8:17

全部回复

  • virtual 关键字,请参考:

    http://msdn.microsoft.com/zh-cn/library/9fkccyh4(v=vs.80).aspx

    最后2个不会引起歧义,因为属性定义,前一个就是属性的类型,后一个就是属性的名称,虽然名字相同,但位置决定了他们的含义不同



    理解的越多,需要记忆的就越少
    2011年3月22日 0:39
    版主
  • 您好,

    virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。例如,此方法可被任何继承它的类重写。

    而第一个Genre 是类型,第二个Genre 是变量名,所以不会有疑义。

    2011年3月23日 2:27
  • 你好

    上面两位答的很全了,我再加点。

    属性的命名规则应符合一般的命名规则,即公有的使用PascalCase规则,而非公有的使用camelCase规则。在上面的例子中,Genre属性是公有的,所以命名为Genre 而不是genre.

    所以出现2个Genre很符合要求的,不会有歧义。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月23日 8:17