佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 732|回复: 6

vb.net built-in classes & built-in interface

[复制链接]
发表于 3-4-2006 09:18 PM | 显示全部楼层 |阅读模式
implements Icomparable,  将出现一个compareTo method,它是怎么和 SortedList 一起用的?
  
看了一些sample,可是我还是不明白!
谢谢回答
回复

使用道具 举报


ADVERTISEMENT

发表于 4-4-2006 09:17 AM | 显示全部楼层
你不明白什么地方呀?
回复

使用道具 举报

 楼主| 发表于 4-4-2006 12:01 PM | 显示全部楼层
唯有简单地打一个例子

public class Person
      implements Icomparable
      private m_sName as string
      private m_sFirstName as string
      private m_sLastName as string

      public ReadOnly property DisplayName() as string
         get
           return string.format("{0} {1},m_sFirstName,m_sLastName)
         end get
      end property

      public property FirstName() as string
          get
           return m_sFirstName
          end get
          set(byval value as string)
            m_sFirstName = value
          end set
       end property

      public property LastName() as string
          get
           return m_sLastName
          end get
          set(byval value as string)
            m_sLastName = value
          end set
       end property

       public function CompareTo(byval obj as object) as integer implements system.icomparable.compareto
      dim objOtherPerson as person
     
           if objOtherPerson.LastName < me.LastName then
              return -1
           elseif objOtherPerson.LastName > me.lastName then
              return 1
           else
              if objOtherPerson.FirstName < me.FirstName then
                return - 1
              elseif objotherperson.firstName > me.firstName then
                return 1
              else
                return 0
              end if
            end if
         end function
end class

...............................................................
public sub main()
    dim objPerson1 as new person()
    dim objPerson2 as new person()
    din objPerson3 as new person()
    dim val1,val2,val3 as integer
    val1 = 243 : val2 = 13 : val3 = 34

    objPerson1.FirstName = "goat"
    objPerson1.LastName = "studio"
    objPerson2.FirstName = "ikanyu"
    objPerson2.LastName = "chiew"
    objPerson3.FirstName = "cari"
    objPerson3.LastName = "commy"
   
    dim slpeople as new sortedList()
    slpeople.add (objPerson1,val1)
    slpeople.add (objPerson2,val1)
    slpeople.add (objPerson3,val1)

    ....


我是想问sortedList是怎么和compareTo一起执行任务的,compareTo return 的value 是 return to sortedlist? 我明白compareTo 可以compare 2 objects, 然后会return 0,1和 -1 to state different condition...有些example 在 compareTo method 里return de value 是算数后算出来的result,这样也能sort, 晕~
希望你明白我问什么
回复

使用道具 举报

发表于 5-4-2006 09:03 AM | 显示全部楼层
我是想问sortedList是怎么和compareTo一起执行任务的,compareTo return 的value 是 return to sortedlist? 我明白compareTo 可以compare 2 objects, 然后会return 0,1和 -1 to state different condition...有些example 在 compareTo method 里return de value 是算数后算出来的result,这样也能sort, 晕~
希望你明白我问什么


不太明白红色的部分...

Person 这物件已经 implement IComparable, 所以你必须写出 compare 的方法, 你已经写在 CompareTo 里面. Sort List 要接收的是 IComparable 介面的 object, 好让它能运用 CompareTo 来进行它的 sorting, 简单来说就是这样运作...
回复

使用道具 举报

 楼主| 发表于 5-4-2006 12:18 PM | 显示全部楼层
谢谢你的回复(我等很久了),
if objOtherPerson.LastName < me.LastName then
              return -1
elseif objOtherPerson.LastName > me.lastName then
              return 1
else
              if objOtherPerson.FirstName < me.FirstName then
                return - 1
              elseif objotherperson.firstName > me.firstName then
                return 1
              else
                return 0
              end if
end if


我很不明白compareTo它的return value是怎么能sort 呢?是根据什么来排续de?

另一个sample如下,他的compareTo return de value 是怎么sort de?
http://www.raritanval.edu/depart ... etfw/Interfaces.htm

如果这个明白了,我就可以去next chapter了  
回复

使用道具 举报

发表于 5-4-2006 02:34 PM | 显示全部楼层
CompareTo 只是比较两个物件, 并没有 sort.
真正的 sort 已经在 Sort List 里做好了.

CompareTo 的意义是, 只要物件 1 比物件 2 大, 那么物件 2 就会和物件 1 交换位置, 然后一直和物件 3, 物件 4... 比较下去, 来达到 sort 的目的.
回复

使用道具 举报

Follow Us
 楼主| 发表于 5-4-2006 04:42 PM | 显示全部楼层
原帖由 goatstudio 于 5-4-2006 02:34 PM 发表
CompareTo 只是比较两个物件, 并没有 sort.
真正的 sort 已经在 Sort List 里做好了.

CompareTo 的意义是, 只要物件 1 比物件 2 大, 那么物件 2 就会和物件 1 交换位置, 然后一直和物件 3, 物件 4... 比较下 ...


xie xie ni, wo ming bai le
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 5-3-2025 11:18 AM , Processed in 0.127926 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表