→ andymai:如果那方法是static的話就不用new了... 09/13 19:37
可是我方法的前面也沒看到static...
※ 編輯: bernachom 來自: 114.42.115.72 (09/13 19:42)
→ s3748679:有可能是要透過某物件才能create說,換句話說 09/13 22:44
→ s3748679:這類別可能是某類別的附屬品哦 09/13 22:44
→ s3748679:還是補一下好了,理論上找不到ctor就代表該ctor非public 09/13 22:59
→ s3748679:或根本不需要實體,而要能得到實體大概有二種情況 09/13 23:00
→ s3748679:一個就像上面該大大一樣,找找看該類別有無可用的static 09/13 23:01
→ s3748679:因為該static成員因為是本身類別成員,所以看得到ctor 09/13 23:01
→ s3748679:另一種情況則是ctor為friend,使其他類別能看到ctor又在 09/13 23:03
→ s3748679:public域看不到 PS:像是引進組件時 不應該看到friend這樣 09/13 23:04
→ s3748679:應該就是這樣了@@~ 請多多指教 09/13 23:05
有點感覺了,我再把書翻看看,謝謝各位前輩的幫忙
※ 編輯: bernachom 來自: 114.42.115.72 (09/13 23:18)
→ andymai:那可以把Locksmith這個類別貼上來嗎? 09/13 23:18
好,我等一下打一下
※ 編輯: bernachom 來自: 114.42.115.72 (09/13 23:19)
[CODE]
我打部份相關的code出來
class Safe{
private Jewels contents = new Jewels();
private string safeCombination = "12345";
public Jewels Open(string combination)
{
if (combination == safeCombination)
return contetns;
else
return null;
}
public void PickLock(Locksmith lockpicker){ //#1
lockpicker.WriteDownCombination(safeCombination);
}
}
class Locksmith{
public void OpenSafe(Safe safe, Owner owner){
safe.PickLock(this); //#2
Jewels safeContents = safe.Open(writtenDownCombination);
ReturnContents(safeContents, owner);
}
// other code
.
.
.
.
}
class Program{
static void Main(string[] args)
{
Owner owner = new Owner();
Safe safe = new Safe();
//other code
Console.ReadKey();
}
好像就是前輩們說,Locksmith這個類別是safe這個instance的附屬品囉 @@?
謝謝幫忙
※ 編輯: bernachom 來自: 114.42.115.72 (09/13 23:31)
→ andymai:instance是拿來統一操作用的~就像主機板上有PCI-E顯示卡 09/14 01:03
→ andymai:介面~所以不管哪家廠牌的PCI-E顯示卡都可以插上去用一樣 09/14 01:04
→ andymai:看到這些程式並不能就這樣判斷沒有new過~因為safe.PickLoc 09/14 01:06
→ andymai:k傳的是"this"~所以關鍵點在於Locksmith的OpenSafe在哪裡 09/14 01:07
→ andymai:被呼叫了~也許在那邊就可以看到new的實體... 09/14 01:08
→ andymai:另外Safe是class型態~說它是instance?應該不恰當吧??? 09/14 01:10
最後的class Program裡面有寫這一段
Safe safe = new Safe();
所以我就把safe當成是instance了@@..
想請教一下
那個this傳的是物件的參考,是傳哪個物件的哪個參考呢?
我看得頭有點轉不過來..
謝謝您的幫忙
※ 編輯: bernachom 來自: 114.42.115.72 (09/14 01:32)
→ andymai:"this"顧名思義就是"自己"~在Locksmith這個類別裡面用~當 09/14 02:08
→ andymai:然指的就是"當下的自己"~所以肯定在某個地方有new過~不然 09/14 02:09
→ andymai:沒有身體~又哪來的自己? 09/14 02:09
請教一下
所以這裡的this指的就是Locksmith 所 new出來的東西囉?
我在翻書看看,因為一直沒找到Locksmith所new出來的東西
※ 編輯: bernachom 來自: 114.42.115.72 (09/14 02:29)
→ andymai:嗯~建議是從呼叫OpenSafe的地方開始查... 09/14 02:46
→ ssccg:你貼的部分只有class定義,跟實際上有沒有new instance沒關 09/14 16:03
→ ssccg:如果OpenSafe有被用到,那個地方自然有某個Locksmith的物件 09/14 16:04
→ ssccg:someLS.OpenSafe(safe, owner); // someLS 就是那個物件 09/14 16:08
→ ssccg:方法定義的地方那樣寫就是定義會傳入物件了 09/14 16:09
→ ssccg:你先把語法弄熟一點吧... 09/14 16:09