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

การคัดเลือกนักแสดงเป็นกระบวนการที่ประเภทวัตถุจะถูกแปลงเป็นประเภทอื่นอย่างชัดเจนหากได้รับอนุญาตให้ทำการแปลง กระบวนการนี้อาจนำไปสู่การเปลี่ยนแปลงมูลค่า

8
Cast List <int> เป็น List <string> ใน. NET 2.0
คุณสามารถแคสต์List&lt;int&gt;ให้ได้List&lt;string&gt;หรือไม่? ฉันรู้ว่าฉันสามารถวนซ้ำและ. ToString () สิ่งนี้ได้ แต่นักแสดงจะยอดเยี่ยม ฉันอยู่ใน C # 2.0 (ไม่มีLINQ )
97 c#  generics  casting 

11
เหตุใดจึงไม่สามารถส่ง Integer เป็น String ใน java ได้
ฉันพบข้อยกเว้นแปลก ๆ : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String จะเป็นไปได้อย่างไร? แต่ละออบเจ็กต์สามารถถูกโยนเป็น String ได้ใช่หรือไม่? รหัสคือ: String myString = (String) myIntegerObject; ขอบคุณ.
96 java  string  casting  integer 



3
ส่งวัตถุไปยังส่วนต่อประสานใน TypeScript
ฉันกำลังพยายามแคสต์ในโค้ดของฉันจากเนื้อหาของคำขอในแบบด่วน (โดยใช้มิดเดิลแวร์ตัวแยกวิเคราะห์เนื้อหา) ไปยังอินเทอร์เฟซ แต่ไม่ได้บังคับใช้ความปลอดภัยประเภท นี่คืออินเทอร์เฟซของฉัน: export interface IToDoDto { description: string; status: boolean; }; นี่คือรหัสที่ฉันพยายามสร้างนักแสดง: @Post() addToDo(@Response() res, @Request() req) { const toDo: IToDoDto = &lt;IToDoDto&gt; req.body; // &lt;&lt;&lt; cast here this.toDoService.addToDo(toDo); return res.status(HttpStatus.CREATED).end(); } และสุดท้ายวิธีการบริการที่เรียกว่า: public addToDo(toDo: IToDoDto): void { toDo.id = this.idCounter; this.todos.push(toDo); this.idCounter++; } ฉันสามารถส่งผ่านข้อโต้แย้งใด ๆได้แม้แต่ข้อโต้แย้งที่ไม่เข้าใกล้คำจำกัดความของอินเทอร์เฟซและรหัสนี้จะทำงานได้ดี ฉันคาดหวังว่าหากไม่สามารถส่งการส่งจากเนื้อหาการตอบสนองไปยังอินเทอร์เฟซได้ข้อยกเว้นจะถูกส่งไปที่รันไทม์เช่น …

3
หล่อ CGFloat เพื่อลอยใน Swift
ฉันต้องการเก็บค่าเป็น a Floatแต่แหล่งข้อมูลคือCGFloat: let myFloat : Float = myRect.origin.x แต่ผลลัพธ์นี้ทำให้เกิดข้อผิดพลาดของคอมไพเลอร์: 'NSNumber' ไม่ใช่ประเภทย่อย 'Float' ดังนั้นถ้าฉันโยนมันอย่างชัดเจนเช่นนี้: let myFloat : Float = myRect.origin.x as Float แต่สิ่งนี้ทำให้เกิดข้อผิดพลาดของคอมไพเลอร์: 'ไม่สามารถแปลงประเภทของนิพจน์' Float 'เป็น' Float '' อะไรคือวิธีที่ถูกต้องในการดำเนินการและตอบสนองความต้องการของคอมไพเลอร์?
94 casting  swift  cgfloat 

8
แคสต์ที่ไม่ได้ลงชื่อเพื่อลงนามที่มีประสิทธิภาพหลีกเลี่ยงพฤติกรรมที่กำหนดการนำไปใช้งาน
ฉันต้องการกำหนดฟังก์ชันที่รับunsigned intอาร์กิวเมนต์เป็นและส่งคืนintโมดูโลที่สอดคล้องกัน UINT_MAX + 1 ให้กับอาร์กิวเมนต์ ความพยายามครั้งแรกอาจมีลักษณะดังนี้: int unsigned_to_signed(unsigned n) { return static_cast&lt;int&gt;(n); } แต่อย่างที่นักกฎหมายภาษาใด ๆ ทราบการคัดเลือกจากไม่ได้ลงนามเป็นเซ็นชื่อสำหรับค่าที่มีขนาดใหญ่กว่า INT_MAX นั้นถูกกำหนดให้ใช้งานได้ ฉันต้องการใช้สิ่งนี้ซึ่ง (ก) อาศัยเฉพาะพฤติกรรมที่กำหนดโดยข้อมูลจำเพาะเท่านั้น และ (b) รวบรวมเป็น no-op บนเครื่องที่ทันสมัยและปรับแต่งคอมไพเลอร์ สำหรับเครื่องจักรที่แปลกประหลาด ... หากไม่มีโมดูโลคอนดักเตอร์ int ที่ลงนาม UINT_MAX + 1 ไปยัง int ที่ไม่ได้ลงนามสมมติว่าฉันต้องการยกเว้น ถ้ามีมากกว่าหนึ่ง (ฉันไม่แน่ใจว่าเป็นไปได้) สมมติว่าฉันต้องการอันที่ใหญ่ที่สุด ตกลงครั้งที่สอง: int unsigned_to_signed(unsigned n) { int int_n = static_cast&lt;int&gt;(n); …

4
ส่ง shared_ptr <Derived> เป็น shared_ptr <Base>
วิธีใดที่ดีที่สุดในการส่งผ่านshared_ptrประเภทที่ได้รับไปยังฟังก์ชันที่ใช้shared_ptrประเภทฐาน โดยทั่วไปฉันส่งผ่านshared_ptrs โดยการอ้างอิงเพื่อหลีกเลี่ยงสำเนาที่ไม่จำเป็น: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); แต่จะไม่ได้ผลถ้าฉันพยายามทำสิ่งที่ชอบ int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); ฉันสามารถใช้ foo(dynamic_pointer_cast&lt;Base, Derived&gt;(bar)); แต่ดูเหมือนว่าจะไม่เหมาะสมด้วยเหตุผลสองประการ: dynamic_castดูเหมือนว่าบิตมากเกินไปสำหรับการที่เรียบง่ายที่ได้รับการหล่อฐาน ตามที่ฉันเข้าใจdynamic_pointer_castสร้างสำเนา (แม้ว่าจะเป็นเพียงชั่วคราว) ของตัวชี้เพื่อส่งผ่านไปยังฟังก์ชัน มีทางออกที่ดีกว่านี้หรือไม่? อัปเดตสำหรับลูกหลาน: มันกลายเป็นปัญหาของไฟล์ส่วนหัวที่หายไป นอกจากนี้สิ่งที่ฉันพยายามทำต่อไปนี้ถือเป็นปฏิปักษ์ โดยทั่วไปแล้ว ฟังก์ชั่นที่ไม่ได้ส่งผลกระทบต่อชีวิตของวัตถุ (เช่นวัตถุที่ยังคงถูกต้องสำหรับระยะเวลาของฟังก์ชั่น) int foo(bar&amp; b)ควรจะใช้การอ้างอิงธรรมดาหรือตัวชี้เช่น ฟังก์ชั่นที่ใช้วัตถุ (เช่นเป็นผู้ใช้ขั้นสุดท้ายของวัตถุที่กำหนด) ควรใช้โดยค่าเช่นunique_ptr int foo(unique_ptr&lt;bar&gt; b)ผู้โทรควรstd::moveใส่ค่าลงในฟังก์ชัน ฟังก์ชั่นที่ขยายอายุการใช้งานของวัตถุควรใช้โดยค่าเช่นshared_ptr int foo(shared_ptr&lt;bar&gt; b)คำแนะนำตามปกติเพื่อหลีกเลี่ยงการอ้างอิงแบบวงกลมใช้ ดูรายละเอียดเกี่ยวกับ Back to Basicsของ …

6
const_cast ปลอดภัยหรือไม่?
const_castฉันไม่สามารถหาข้อมูลมากใน ข้อมูลเดียวที่ฉันพบ (ใน Stack Overflow) คือ: const_cast&lt;&gt;()จะใช้ในการเพิ่ม / ลบ const (เนส) (หรือระเหย-Ness) ของตัวแปร นี่ทำให้ฉันกังวล อาจconst_castทำให้เกิดพฤติกรรมที่ไม่คาดคิดได้หรือไม่? ถ้าเป็นเช่นนั้นคืออะไร? อีกวิธีหนึ่งคือใช้เมื่อconst_castใด

11
ฉันจะเพิ่มค่าจำนวนเต็มด้วย javascript (jquery) ให้กับค่าที่ส่งคืนสตริงได้อย่างไร
ฉันมีบล็อก html ง่ายๆเช่น: &lt;span id="replies"&gt;8&lt;/span&gt; ใช้ jquery ฉันพยายามเพิ่ม 1 ให้กับค่า (8) var currentValue = $("#replies").text(); var newValue = currentValue + 1; $("replies").text(newValue); สิ่งที่เกิดขึ้นมันปรากฏดังนี้: 81 แล้ว 811 ไม่ใช่ 9 ซึ่งจะเป็นคำตอบที่ถูกต้อง ผมทำอะไรผิดหรือเปล่า?

8
ส่งวัตถุไปที่ T
ฉันกำลังแยกวิเคราะห์ไฟล์ XML กับXmlReaderคลาสใน. NET และฉันคิดว่าการเขียนฟังก์ชันการแยกวิเคราะห์ทั่วไปเพื่ออ่านแอตทริบิวต์ต่างๆโดยทั่วไปจะเป็นการดี ฉันมาพร้อมกับฟังก์ชั่นต่อไปนี้: private static T ReadData&lt;T&gt;(XmlReader reader, string value) { reader.MoveToAttribute(value); object readData = reader.ReadContentAsObject(); return (T)readData; } เมื่อฉันตระหนักได้ว่าสิ่งนี้ไม่ได้ผลทั้งหมดตามที่ฉันวางแผนไว้ มันแสดงข้อผิดพลาดกับประเภทดั้งเดิมเช่นintหรือdoubleเนื่องจากนักแสดงไม่สามารถแปลงจากประเภทstringเป็นตัวเลขเป็นประเภทตัวเลขได้ มีวิธีใดบ้างที่ฟังก์ชันของฉันจะเหนือกว่าในรูปแบบที่แก้ไข
91 c#  generics  casting 

10
ความแตกต่างระหว่างการหล่อและการใช้เมธอด Convert To ()
ฉันมีฟังก์ชั่นที่ร่าย a doubleon stringค่า string variable = "5.00"; double varDouble = (double)variable; มีการตรวจสอบการเปลี่ยนแปลงรหัสและโครงการสร้างขึ้นโดยมีข้อผิดพลาด: System.InvalidCastException: Specified cast is not valid. อย่างไรก็ตามหลังจากทำสิ่งต่อไปนี้ ... string variable = "5.00"; double varDouble = Convert.ToDouble(variable); ... โครงการสร้างโดยไม่มีข้อผิดพลาดใด ๆ ความแตกต่างระหว่างการหล่อและการใช้Convert.To()วิธีคืออะไร? เหตุใดการหล่อจึงโยนExceptionและใช้Convert.To()ไม่?
91 c#  casting 

9
(String) หรือ. toString ()?
ฉันมีวิธีการที่มีObject oพารามิเตอร์ ในวิธีนี้ฉันรู้ว่ามีStringใน "o" ซึ่งไม่เป็นโมฆะ ไม่จำเป็นต้องตรวจสอบหรือทำอย่างอื่น ฉันต้องปฏิบัติต่อมันเหมือนกับStringสิ่งของ แค่อยากรู้อยากเห็น - อะไรถูกกว่า - โยนให้Stringหรือใช้Object.toString()? หรือมันเหมือนกันตามเวลา - / cpu- / mem- ราคา? อัปเดต: วิธีนี้ยอมรับObjectเนื่องจากเป็นการใช้งานอินเทอร์เฟซ ไม่มีวิธีใดในการเปลี่ยนประเภทพารามิเตอร์ และมันไม่ได้nullเลย ฉันแค่อยากจะบอกว่าฉันไม่จำเป็นต้องตรวจสอบความว่างเปล่าหรือความว่างเปล่า ในกรณีของฉันมักจะมีสตริงที่ไม่ว่างเปล่า
89 java  casting 


27
เป็นไปได้หรือไม่ที่จะกำหนดอ็อบเจ็กต์คลาสพื้นฐานให้กับการอ้างอิงคลาสที่ได้รับด้วยการพิมพ์แบบชัดแจ้ง
เป็นไปได้หรือไม่ที่จะกำหนดอ็อบเจ็กต์คลาสพื้นฐานให้กับการอ้างอิงคลาสที่ได้รับด้วยตัวพิมพ์ที่ชัดเจนใน C #? ฉันได้ลองแล้วและเกิดข้อผิดพลาดรันไทม์

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