แบบ A ใช้ตัวแปรเพิ่มอีกตัวหนึ่งซึ่งหาความต่างอะไรไม่ได้ในเชิง Performance หรือ Memory
แต่แบบ A สามารถอ้างอิงค่านั้นๆ ได้อีกครั้ง ทำให้แบบ B เหมาะสำหรับการใช้ครั้งเดียวใน Method ครับ
ถ้าเขียน cil โค๊ดโดยตรงก็น่าจะประมาณนี้
A:
ldloc.s a
call Font ClassName::getFont()
dup
stloc.s font
callvirt instance void ClassName::setFont(Font)
B:
ldloc.s a
call Font ClassName::getFont()
callvirt instance void ClassName::setFont(Font)
ไม่ต่างกันครับ
nat3738 Sat, 18/10/2014 - 14:04
ไม่ต่างกันครับ
อยากรู้ก็ต้อง decompile
tekkasit Sat, 18/10/2014 - 14:36
อยากรู้ก็ต้อง decompile ดูครับ แต่สองแบบนี้ ถ้าโค้ดมีแค่นี้ น่าจะเท่ากันทุกประการเลยครับ
แบบ A
revensoft Sat, 18/10/2014 - 16:11
แบบ A ใช้ตัวแปรเพิ่มอีกตัวหนึ่งซึ่งหาความต่างอะไรไม่ได้ในเชิง Performance หรือ Memory
แต่แบบ A สามารถอ้างอิงค่านั้นๆ ได้อีกครั้ง ทำให้แบบ B เหมาะสำหรับการใช้ครั้งเดียวใน Method ครับ
ถ้าเขียน cil โค๊ดโดยตรงก็น่าจะประมาณนี้
A:
ldloc.s a
call Font ClassName::getFont()
dup
stloc.s font
callvirt instance void ClassName::setFont(Font)
B:
ldloc.s a
call Font ClassName::getFont()
callvirt instance void ClassName::setFont(Font)
เข้าใจละครับ ขอบคุณมากครับ
zerntrinos Sun, 19/10/2014 - 02:54
เข้าใจละครับ ขอบคุณมากครับ