iT邦幫忙

0

C#物件取 prop. 的值

有個疑問想請教大家,如下的prop一路是從傳入的obj得來,為什麼取值時:prop.GetValue(obj) 還要傳入obj呢? 還是有沒有其它寫法?
謝謝!
https://ithelp.ithome.com.tw/upload/images/20210910/201155441lVmkhdqi0.jpg

看更多先前的討論...收起先前的討論...
Homura iT邦高手 1 級 ‧ 2021-09-10 11:50:56 檢舉
prop應該沒有原來物件的value了
prop已經沒有原本Obj的內容了
所以不帶參數當然沒辦法~~
Amigo iT邦新手 5 級 ‧ 2021-09-10 12:08:16 檢舉
GetValue()有 obj,而且它應該只有 prop 的 Name,真不知道它底子裡是怎麼取值的?
或許有類似 obj.prop("Name")這種...純屬亂猜
小魚 iT邦大師 1 級 ‧ 2021-09-10 13:01:05 檢舉
你可以慢慢Console.WriteLine,
一個一個研究每個變數抓到的是甚麼內容.

2 個回答

5
海綿寶寶
iT邦大神 1 級 ‧ 2021-09-10 12:31:24
最佳解答

短的答案:
取物件prop值的方法有兩種:
1.問題中提到的方法
2.jupiter.Name 或 jupiter.Distance

長的答案:
要弄清楚 Class 和 Object 的差別
Planet 是 Class (定義);jupiter 是 Object (實體)
Class 裡面是沒有「值」的;Object 才有「值」

PropertyInfo 是「Class 所有的 property 資訊」
包括名稱,型態
至於「值」,只有 Object 才有
這是為什麼 getValue() 要傳 Object 的原因

如果我能決定
我根本不會提供 getValue 這個函式
因為會造成混淆
/images/emoticon/emoticon06.gif

實務上用到的機會也不大
使用 Object 時
不太會連 Object 的名稱都不知道
/images/emoticon/emoticon13.gif

0

他定義方式如下,就得按照他的傳法

public object? GetValue (object? obj);

你是不是想說prop.GetValue(),這個prop本來就是從object來的,為何還要多傳這參數?
嗯那答案就如上,他就是這樣處理數值,除非他又做了一個另一個方法,能達到同樣效果XD

public object? GetValue ();

來自 https://docs.microsoft.com/zh-tw/dotnet/api/system.reflection.propertyinfo.getvalue?view=net-5.0

Amigo iT邦新手 5 級 ‧ 2021-09-10 11:40:39 檢舉

我想問的是這樣沒錯。覺得怎沒有prop.Value的寫法XD

我想他會這樣做一定有他要處理的事情囉,如果是自己寫的方法就可以控制啦,直覺當然是像你想的這樣比較清楚

我要發表回答

立即登入回答