none
我想請教有關於物件問題 RRS feed

  • 問題

  • 各位大大好..最近在寫個功能例如

    PersonData pd=new PersonData();

    然後可以這樣用

    pd.人員.["王小明"].["生日"]

    得到1999/01/02

    這樣可以一直點下去的是用innerClass做的嗎?不太熟,肯請賜教.

    2010年10月15日 下午 01:17

解答

  •  public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

    改成

     public AnotherClass 生日 { get { return 生日value; } set { 生日value = value; } }

    再加這一段

    public class AnotherClass{

         public DateTime 我是日期屬性 { get ; set; }

    }

    • 已標示為解答 IHOPETO 2010年10月20日 上午 06:04
    2010年10月16日 下午 06:08

所有回覆

  • 那個是回傳值。

    每個屬性都會回傳物件,所以可以一直點下去

    2010年10月15日 下午 01:35
  • 這我了解,只是..試了半天還在卡關,可否幫我開個頭

    class PersonData(){

    personData(){

    this.人員();

    }

    string 人員(){<<--這邊要怎麼實現pd.人員.["王小明"]

    }

     

    }

    2010年10月15日 下午 02:01
  • public class UsePersonData {
      public void use() {
        PersonData person = new PersonData();
        Dictionary<string,string> dic = new Dictionary<string,string>();
        dic.Add("生日","2010/10/15");
        person.人員.Add("王小明", dic);
    
    
        //你要這個嗎?
        string test = person.人員["王小明"]["生日"];
      }
    }
    
    public class PersonData {
      public Dictionary<string, Dictionary<string, string>> 人員 { get; set; }
    }
    
    2010年10月15日 下午 02:30
  • public class UsePersonData {
    
     public void use() {
    
      PersonData person = new PersonData();
    
      Dictionary<string,string> dic = new Dictionary<string,string>();
    
      dic.Add("生日","2010/10/15");
    
      person.人員.Add("王小明", dic);
    
    
    
    
    
      //你要這個嗎?
    //person.人員["王小明"].生日  希望是如此不好意思,我上面打錯
      string test = person.人員["王小明"]["生日"];
    
     }
    
    }
    
    
    
    public class PersonData {
    
     public Dictionary<string, Dictionary<string, string>> 人員 { get; set; }
    
    }
    
    

    不好意思阿尼大師,差不多是這樣只是..我現在是希望person.人員["王小明"].生日

    因為我現在卡在不知道怎麼物件中又有一個物件可以點

    不過也讓我學到Dictionary,感謝感謝

    2010年10月15日 下午 03:23
  • public class UsePersonData {
    	public void use() {
    		PersonData person = new PersonData();
    		person.人員.Add("王小明", new Person(){生日=DateTime.Now});
    		
    		
    		
    		string test = person.人員["王小明"].生日.ToString();
    	}
    }
    
    public class PersonData {
    	public Dictionary<string, Person> 人員 { get; set; }
     
    }
    
    public class Person{
    	public DateTime 生日{get;set;}
    }
    
    
    2010年10月15日 下午 03:43
  • public class UsePersonData {
    	public void use() {
    		PersonData person = new PersonData();
    		person.人員.Add("王小明", new Person(){生日=DateTime.Now});//這裡面是匿名類別嘛
    		
    		
    		
    		string test = person.人員["王小明"].生日.ToString();
    	}
    }
    
    public class PersonData {
    	public Dictionary<string, Person> 人員 { get; set; }//那這邊是什麼意思呢??看不太懂耶
     
    }
    
    public class Person{
    	public DateTime 生日{get;set;}///那這邊是什麼意思呢??看不太懂耶,//生日這個變數底下還能實作?好怪喲.不懂!!糊塗了
    }
    大大..如果要用的話應該是要宣告成 UsePersonData aa = new UsePersonData();
                aa.use();
    可是他會說並未將物件參考設定為物件的執行個體,get;set那裡是不是要給值呢..對不起問題很多
    2010年10月16日 上午 02:46
  • public DateTime 生日 {get;set;}
    其實類似於
    DateTime _birthday;
    public DateTime 生日
    {
            get
            {
                return _birthday;
            }
            set
            {
                _birthday = value;
            }
    }


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年10月16日 上午 07:57
  • 剛剛又想到一個問題,我想要讓功能更好所以我打算這樣如下 

    我想要的功能是t.人員集合[0].生日

    這樣就會知道是小明的生日

    Q1我現在只能弄到t.人員集合[0]=小明//輸出

    Q2這個集合我試了似乎是一個key值一個object如果t.人員集合[0].生日.爸爸//0小明之爸 1中明之爸<<--有辦法做到第三個物件嗎??

    網路上找不太到這種物件中的物件用法,本人之前也碰過java但沒有做到此種等級的物件用法所以不太熟,就不好意思就麻煩各位大師指點

    string[] p = { "小明", "中明", "大明" };

     

    Class1  tt = new Class1();

     

     

    for (int i = 0; i < p.Length; i++) {

                    tt.人員集合.Add(i, p[i]);//將index值跟人名塞入

                }

     

     public class Class1

        {

     

            Dictionary<string, Person> BufferRowData = new Dictionary<string, Person>();

             public Dictionary<int, string> 人員集合 { get { return BufferRowData1; } set { BufferRowData1 = value; } }

     

        }

     

     public class Person

        {

            public DateTime 生日value;

     

            public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

        }

     

     

     

     

    2010年10月16日 上午 11:05
  • Q1:

    既然 t.人員集合[0]= 小明  那t.人員集合[0].生日不就是小明的生日嗎?
    所以你應該要判斷t.人員集合[0]是不是小明

    Q2:

    同理 你應該要用 t.人員集合[0].爸爸 來判斷 但同時 你要改寫 Person 這個Class


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年10月16日 下午 12:23
  • Q1:

    既然 t.人員集合[0]= 小明  那t.人員集合[0].生日不就是小明的生日嗎?
    所以你應該要判斷t.人員集合[0]是不是小明

    Q2:

    同理 你應該要用 t.人員集合[0].爸爸 來判斷 但同時 你要改寫 Person 這個Class

     


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速
    alex_lee大師針對Q2我意思是t.人員集合[0].生日.爸爸
    這例子舉的不太好
    我看集合只能塞二個值,一個key值一個就是實際值,所以我才想說.如果我要在生日裡頭又有一個物件然後可以點的話,是能辦的到的嗎?還是方法就要改寫了呢??~t.人員集合[0].爸爸.生日可能這樣比較合理,但我只是想知道是不是可以在生日之後又有一個物件可以點

    2010年10月16日 下午 02:03
  • 這個討論串前前後後看了十幾遍,我覺得你是方向想錯了

    重點不在於「可以點出幾層」,而是在於回傳值,只要回傳值有屬性讓你用,寫程式的時候就點得出來

     

    以你最後一個問題來看:生日還能不能有一個物件可以點?

    當然可以。只要生日這個屬性回傳的物件裡面有屬性可以給你用就行了

    2010年10月16日 下午 05:26
  • 你是要在 Design time 進行查詢, 還是在 Runtime 進行查詢呢? 你是打算設計一個動態語言解譯器嗎? 如果你有能力設計這種東西, 應該就不需要在這裡發問了。

    建議你先把自己的需求想清楚, 再來發問。

     


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny 
    2010年10月16日 下午 05:28
  • 這個討論串前前後後看了十幾遍,我覺得你是方向想錯了

    重點不在於「可以點出幾層」,而是在於回傳值,只要回傳值有屬性讓你用,寫程式的時候就點得出來

     

    以你最後一個問題來看:生日還能不能有一個物件可以點?

    當然可以。只要生日這個屬性回傳的物件裡面有屬性可以給你用就行了

    對呀..我想了很久 是這邊要再加嗎?阿尼大大能在教我加一個嗎?我想我應該就懂了?我想了很久還是不知道要怎麼加才能讓生日有一個物件可以點,會的東西太少了

    是這邊要改嗎

    public class Person

        {

            public DateTime 生日value;

     

            public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

        }

     

    2010年10月16日 下午 05:36
  •  public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

    改成

     public AnotherClass 生日 { get { return 生日value; } set { 生日value = value; } }

    再加這一段

    public class AnotherClass{

         public DateTime 我是日期屬性 { get ; set; }

    }

    • 已標示為解答 IHOPETO 2010年10月20日 上午 06:04
    2010年10月16日 下午 06:08
  •  public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

    改成

     public AnotherClass 生日 { get { return 生日value; } set { 生日value = value; } }

    再加這一段

    public class AnotherClass{

         public DateTime 我是日期屬性 { get ; set; }

    }

    不好意思請教一下大大...如果在Dictionary<string,string> dic = new Dictionary<string,string>();集合裡,我想要可以用string 也可以用index做key值的話.也就是多載,是不是要用到繼承或是抽像化然後在去實作他?

          tt.人員集合.Add(int, p[i]);//像下面的例子

      tt.人員集合.Add(string, p[i])


    2010年10月19日 下午 01:48
  •  public DateTime 生日 { get { return 生日value; } set { 生日value = value; } }

    改成

     public AnotherClass 生日 { get { return 生日value; } set { 生日value = value; } }

    再加這一段

    public class AnotherClass{

         public DateTime 我是日期屬性 { get ; set; }

    }

    謝謝大大,,你這樣我就知道什麼意思了~我懂了
    2010年10月20日 上午 06:04