คำถามติดแท็ก properties

คุณสมบัติในภาษาการเขียนโปรแกรมเชิงวัตถุบางอย่างเป็นสมาชิกประเภทคลาสพิเศษซึ่งอยู่ตรงกลางระหว่างเขตข้อมูล (หรือสมาชิกข้อมูล) และวิธีการ คุณสมบัติเป็นแบบอ่านและเขียนเช่นเขตข้อมูล แต่คุณสมบัติการอ่านและการเขียนคือ (ปกติ) แปลเพื่อรับและตั้งค่าการเรียกเมธอด

13
รับชื่อคุณสมบัติเป็นสตริง
(ดูวิธีแก้ปัญหาด้านล่างที่ฉันสร้างโดยใช้คำตอบที่ฉันยอมรับ) ฉันพยายามปรับปรุงความสามารถในการบำรุงรักษาของโค้ดบางอย่างที่เกี่ยวกับการสะท้อนกลับ แอปนี้มี. NET Remoting interface ซึ่งเป็นวิธีการที่เรียกว่า Execute สำหรับการเข้าถึงส่วนต่าง ๆ ของแอพซึ่งไม่ได้รวมอยู่ในอินเทอร์เฟซระยะไกลที่เผยแพร่ นี่คือวิธีที่แอปกำหนดคุณสมบัติ (แบบคงที่ในตัวอย่างนี้) ซึ่งหมายถึงให้สามารถเข้าถึงได้ผ่าน Execute: RemoteMgr.ExposeProperty("SomeSecret", typeof(SomeClass), "SomeProperty"); ดังนั้นผู้ใช้ระยะไกลสามารถโทร: string response = remoteObject.Execute("SomeSecret"); และแอพจะใช้การสะท้อนเพื่อค้นหา SomeClass.SomeProperty และส่งคืนค่าเป็นสตริง น่าเสียดายที่ถ้ามีคนเปลี่ยนชื่อ SomeProperty และลืมเปลี่ยน parm ที่ 3 ของ ExposeProperty () มันจะทำลายกลไกนี้ ฉันต้องการเทียบเท่า: SomeClass.SomeProperty.GetTheNameOfThisPropertyAsAString() ใช้เป็น parm ตัวที่ 3 ใน ExposeProperty ดังนั้นเครื่องมือการรีแฟคเตอร์จะดูแลการเปลี่ยนชื่อ มีวิธีทำเช่นนี้หรือไม่? ขอบคุณล่วงหน้า. ตกลงนี่คือสิ่งที่ฉันสร้างขึ้น (ตามคำตอบที่ฉันเลือกและคำถามที่เขาอ้างถึง): // …

11
ผู้ได้รับทรัพย์สินและผู้ตั้งถิ่นฐาน
ด้วยคลาสแบบง่ายนี้ฉันได้รับคำเตือนคอมไพเลอร์ กำลังพยายามแก้ไข / เข้าถึงxภายใน setter / getter ของตนเอง และเมื่อฉันใช้มันเช่นนี้ var p: point = Point() p.x = 12 ฉันได้รับ EXC_BAD_ACCESS ฉันจะทำสิ่งนี้ได้อย่างไรถ้าไม่มี ivars สำรองอย่างชัดเจน class Point { var x: Int { set { x = newValue * 2 //Error } get { return x / 2 //Error } } // ... }

4
มีโอเปอเรเตอร์“ ไม่ได้อยู่ใน” ใน JavaScript เพื่อตรวจสอบคุณสมบัติของวัตถุหรือไม่?
มีตัวดำเนินการ "ไม่อยู่" ใน JavaScript เพื่อตรวจสอบว่าคุณสมบัติไม่มีอยู่ในวัตถุหรือไม่? ฉันไม่พบอะไรเกี่ยวกับสิ่งนี้รอบ ๆ Google หรือ Stack Overflow นี่คือตัวอย่างของรหัสขนาดเล็กที่ฉันกำลังทำงานในที่ที่ฉันต้องการฟังก์ชั่นประเภทนี้: var tutorTimes = {}; $(checked).each(function(idx){ id = $(this).attr('class'); if(id in tutorTimes){} else{ //Rest of my logic will go here } }); อย่างที่คุณเห็นฉันจะใส่ทุกอย่างลงในelseคำสั่ง ดูเหมือนว่าฉันผิดที่จะตั้งค่าคำสั่งif- elseเพื่อใช้elseส่วนนั้น

13
รับชื่อคุณสมบัติของวัตถุ
ฉันสงสัยว่ามีวิธีใดบ้างใน JavaScript ที่จะวนซ้ำวัตถุอย่างนั้น for(var i in myObject) { // ... } แต่รับชื่อของแต่ละคุณสมบัติเช่นนี้ for(var i in myObject) { separateObj[myObject[i].name] = myObject[i]; } ฉันดูเหมือนจะไม่พบสิ่งใดบน Google พวกเขาบอกว่าจะส่งชื่อตัวแปรกับพวกเขา แต่นี่ไม่ใช่ตัวเลือกสำหรับสิ่งที่ฉันพยายามบรรลุ ขอบคุณสำหรับความช่วยเหลือใด ๆ ที่คุณสามารถนำเสนอ

5
ฉันจะใช้ Linq เพื่อรับรายการคุณสมบัติที่ไม่ซ้ำจากรายการวัตถุได้อย่างไร
ฉันกำลังพยายามใช้ Linq เพื่อส่งกลับรายการรหัสที่ระบุรายการของวัตถุที่ id เป็นคุณสมบัติ ฉันต้องการที่จะสามารถทำเช่นนี้ได้โดยไม่ต้องวนลูปผ่านแต่ละวัตถุและดึงรหัสที่เป็นเอกลักษณ์ที่ฉันพบ ฉันมีรายการของวัตถุประเภท MyClass และหนึ่งในคุณสมบัติของคลาสนี้คือ ID public class MyClass { public int ID { get; set; } } สิ่งที่ฉันต้องการจะทำคือเขียนแบบสอบถาม Linq เพื่อส่งรายการรหัสเหล่านั้นกลับมาให้ฉัน ฉันจะทำIList<MyClass>เช่นนั้นได้อย่างไรเมื่อมันคืนค่าIEnumerable<int>ของรหัส? ฉันแน่ใจว่าต้องเป็นไปได้ที่จะทำในหนึ่งหรือสองบรรทัดโดยใช้ Linq แทนที่จะวนซ้ำแต่ละรายการในรายการ MyClass และเพิ่มค่าที่ไม่ซ้ำกันลงในรายการ ความช่วยเหลือใด ๆ ในการสร้างโซลูชันที่สง่างามจะได้รับการชื่นชมอย่างมาก!
171 linq  class  list  c#-3.0  properties 


9
ทำไม 2 == [2] ใน JavaScript
ฉันเพิ่งค้นพบว่า2 == [2]ใน JavaScript เมื่อมันปรากฏออกมาการเล่นโวหารนี้มีผลที่น่าสนใจสองประการ var a = [0, 1, 2, 3]; a[[2]] === a[2]; // this is true ในทำนองเดียวกันงานต่อไปนี้: var a = { "abc" : 1 }; a[["abc"]] === a["abc"]; // this is also true แม้กระทั่งคนแปลกหน้าก็ใช้งานได้เช่นกัน: [[[[[[[2]]]]]]] == 2; // this is true too! WTF? พฤติกรรมเหล่านี้ดูเหมือนจะสอดคล้องกันในทุกเบราว์เซอร์ ความคิดใดว่าทำไมนี่คือคุณสมบัติภาษา? นี่คือผลที่ตามมาอย่างบ้าคลั่งของ "ฟีเจอร์" …

11
ความแตกต่างระหว่างคุณสมบัติและทรัพย์สินคืออะไร? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ สิ่งเหล่านี้ดูเหมือนจะหมายถึงสิ่งเดียวกัน แต่คำใดที่เหมาะสมกว่าในบริบทใด

4
วิธีการตรวจสอบว่าวัตถุมีวิธีการ / คุณสมบัติบางอย่าง?
ใช้รูปแบบไดนามิกอาจ? คุณสามารถเรียกวิธีการ / คุณสมบัติใด ๆ โดยใช้คำสำคัญแบบไดนามิกใช่ไหม? วิธีการตรวจสอบว่ามีวิธีการก่อนที่จะเรียก myDynamicObject.DoStuff () ตัวอย่างเช่น?

4
คุณสมบัติ attribute =“ og: title” ภายในเมตาแท็กคืออะไร
ฉันมีรหัสแหล่งที่มาของเว็บไซต์นี้: <meta content="This is a basic text" property="og:title" /> คุณลักษณะของคุณสมบัตินี้มีจุดประสงค์อะไรและจุดประสงค์ของมันคืออะไร

16
คุณสมบัติเทียบกับวิธีการ
คำถามด่วน: คุณตัดสินใจใช้คุณสมบัติ (ใน C #) เมื่อใดและคุณตัดสินใจใช้วิธีการเมื่อใด เรายุ่งอยู่กับการถกเถียงเรื่องนี้และพบว่ามีบางประเด็นที่เป็นที่ถกเถียงกันว่าเราควรใช้คุณสมบัติหรือวิธีการใด ตัวอย่างหนึ่งคือ: public void SetLabel(string text) { Label.Text = text; } ในตัวอย่างLabelคือตัวควบคุมบนเพจ ASPX มีหลักการที่สามารถควบคุมการตัดสินใจ (ในกรณีนี้) ว่าจะทำวิธีนี้หรือคุณสมบัติ ฉันจะยอมรับคำตอบที่กว้างและครอบคลุมที่สุด แต่นั่นก็สัมผัสกับตัวอย่างที่ฉันให้ไว้ด้วย
147 c#  properties  methods 

10
การแทนที่ฟิลด์หรือคุณสมบัติในคลาสย่อย
ฉันมีคลาสฐานนามธรรมและฉันต้องการประกาศเขตข้อมูลหรือคุณสมบัติที่จะมีค่าแตกต่างกันในแต่ละคลาสที่สืบทอดจากคลาสพาเรนต์นี้ ฉันต้องการกำหนดใน baseclass เพื่อให้ฉันสามารถอ้างอิงได้ในวิธีการเรียนฐาน - ตัวอย่างเช่นการเอาชนะ ToString จะพูดว่า "วัตถุนี้เป็นประเภททรัพย์สิน / เขต " ฉันมีสามวิธีที่ฉันสามารถเห็นการทำเช่นนี้ แต่ฉันสงสัยว่า - วิธีที่ดีที่สุดหรือยอมรับในการทำเช่นนี้คืออะไร? คำถามมือใหม่ขออภัย ตัวเลือกที่ 1: ใช้คุณสมบัตินามธรรมและแทนที่บนคลาสที่สืบทอด ประโยชน์ที่ได้รับจากการบังคับใช้ (คุณต้องลบล้าง) และสะอาด แต่มันรู้สึกผิดเล็กน้อยที่จะส่งคืนค่ารหัสฮาร์ดโค้ดแทนการห่อหุ้มฟิลด์และเป็นโค้ดสองสามบรรทัดแทนที่จะเป็นเพียงฟิลด์ ฉันยังต้องประกาศร่างสำหรับ "ชุด" แต่มันมีความสำคัญน้อยกว่า (และอาจมีวิธีที่จะหลีกเลี่ยงสิ่งที่ฉันไม่ทราบ) abstract class Father { abstract public int MyInt { get; set;} } class Son : Father { public override int MyInt { …
145 c#  properties  field 


10
ตัวอย่างโลกแห่งความจริงเกี่ยวกับวิธีการใช้คุณสมบัติคุณสมบัติในหลาม?
ฉันสนใจวิธีใช้งาน@propertyPython ฉันอ่าน python docs แล้วและตัวอย่างในความคิดของฉันเป็นเพียงรหัสของเล่น: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x ฉันไม่รู้ว่าฉันจะได้ประโยชน์อะไรจากการห่อหุ้ม_xด้วยมัณฑนากร ทำไมไม่ใช้เพียงแค่เป็น: class C(object): def __init__(self): self.x = None ฉันคิดว่าคุณสมบัติคุณสมบัติอาจมีประโยชน์ในบางสถานการณ์ แต่เมื่อ? ใครช่วยกรุณายกตัวอย่างจริง ๆ ให้ฉันได้บ้าง ขอบคุณ

16
เหตุใดจึงเป็นไปไม่ได้ที่จะแทนที่คุณสมบัติ getter เท่านั้นและเพิ่มตัวตั้งค่า [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ทำไมรหัส C # ต่อไปนี้ไม่ได้รับอนุญาต: public abstract class BaseClass { public abstract int Bar { get;} } public class ConcreteClass : BaseClass { public override int Bar { get { return 0; } set {} } } CS0546 'ConcreteClass.Bar.set': ไม่สามารถแทนที่ได้เนื่องจาก 'BaseClass.Bar' ไม่มี accessor …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.