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

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

7
'is' เทียบกับลองแคสต์ด้วยการตรวจสอบ null
ฉันสังเกตว่า Resharper แนะนำให้ฉันเปลี่ยนสิ่งนี้: if (myObj.myProp is MyType) { ... } ในสิ่งนี้: var myObjRef = myObj.myProp as MyType; if (myObjRef != null) { ... } เหตุใดจึงแนะนำการเปลี่ยนแปลงนี้ ฉันคุ้นเคยกับ Resharper ที่แนะนำการเปลี่ยนแปลงการเพิ่มประสิทธิภาพและการเปลี่ยนแปลงการลดรหัส แต่สิ่งนี้รู้สึกว่าต้องการใช้คำสั่งเดียวของฉันและเปลี่ยนเป็นสองซับ ตามMSDN : คือ การแสดงออกประเมินจริงถ้าทั้งสองเงื่อนไขต่อไปนี้: นิพจน์ไม่เป็นโมฆะ สามารถส่งนิพจน์ไปพิมพ์ได้ นั่นคือการแสดงออกของแบบฟอร์ม(type)(expression)จะสมบูรณ์โดยไม่มีข้อยกเว้น ฉันอ่านผิดหรือไม่ได้isทำการตรวจสอบแบบเดียวกันทุกประการเพียงแค่บรรทัดเดียวโดยไม่จำเป็นต้องสร้างตัวแปรท้องถิ่นอื่นอย่างชัดเจนสำหรับการตรวจสอบ null
108 c#  .net  casting  resharper 

15
การแปลงจำนวนเต็มเป็น Long
ฉันต้องการรับค่าของฟิลด์โดยใช้การสะท้อน มันเกิดขึ้นจนฉันไม่แน่ใจเสมอว่าประเภทข้อมูลของฟิลด์คืออะไร สำหรับสิ่งนั้นและเพื่อหลีกเลี่ยงการทำซ้ำรหัสบางอย่างฉันได้สร้างวิธีการต่อไปนี้: @SuppressWarnings("unchecked") private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable { Field f = classUnderTest.getDeclaredField(processFieldName(var)); f.setAccessible(true); T value = (T) f.get(runtimeInstance); return value; } และใช้วิธีนี้เช่น: Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance); หรือ Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance); ปัญหาคือดูเหมือนว่าฉันไม่สามารถส่งIntegerไปที่Long: java.lang.ClassCastException: java.lang.Integer cannot be cast …
108 java  reflection  casting 

8
Java Class.cast () เทียบกับตัวดำเนินการ cast
หลังจากได้รับการสอนในช่วงวัน C ++ ของฉันเกี่ยวกับความชั่วร้ายของตัวดำเนินการแบบ C-style ฉันรู้สึกยินดีในตอนแรกที่พบว่าใน Java 5 java.lang.Classได้รับcastวิธีการ ฉันคิดว่าในที่สุดเราก็มีวิธีจัดการกับการแคสติ้งแบบ OO ปรากฎว่าClass.castไม่เหมือนกับstatic_castใน C ++ reinterpret_castมันเป็นเหมือน จะไม่สร้างข้อผิดพลาดในการคอมไพล์ตามที่คาดไว้และจะเลื่อนไปที่รันไทม์แทน นี่คือกรณีทดสอบง่ายๆเพื่อแสดงพฤติกรรมที่แตกต่างกัน package test; import static org.junit.Assert.assertTrue; import org.junit.Test; public class TestCast { static final class Foo { } static class Bar { } static final class BarSubclass extends Bar { } @Test public void …

2
ความแตกต่างในการแกะกล่องอัตโนมัติระหว่าง Java 6 กับ Java 7
ฉันสังเกตเห็นความแตกต่างของพฤติกรรมการแกะกล่องอัตโนมัติระหว่าง Java SE 6 และ Java SE 7 ฉันสงสัยว่าทำไมถึงเป็นเช่นนั้นเพราะฉันไม่พบเอกสารการเปลี่ยนแปลงใด ๆ ในพฤติกรรมนี้ระหว่างสองเวอร์ชันนี้ นี่คือตัวอย่างง่ายๆ: Object[] objs = new Object[2]; objs[0] = new Integer(5); int myInt = (int)objs[0]; สิ่งนี้รวบรวมได้ดีกับ javac จาก Java SE 7 อย่างไรก็ตามหากฉันให้อาร์กิวเมนต์ "-source 1.6" แก่คอมไพเลอร์ฉันได้รับข้อผิดพลาดในบรรทัดสุดท้าย: inconvertible types found : java.lang.Object required: int ฉันลองดาวน์โหลด Java SE 6 เพื่อคอมไพล์กับคอมไพเลอร์เวอร์ชัน 6 ดั้งเดิม (ไม่มีตัวเลือก …
107 java  casting  java-7  unboxing 

3
นำเข้าคอลัมน์ดาต้าเฟรมของแพนด้าเป็นสตริงไม่ใช่ int
ฉันต้องการนำเข้า csv ต่อไปนี้เป็นสตริงที่ไม่ใช่ int64 Pandas read_csv จะแปลงเป็น int64 โดยอัตโนมัติ แต่ฉันต้องการคอลัมน์นี้เป็นสตริง ID 00013007854817840016671868 00013007854817840016749251 00013007854817840016754630 00013007854817840016781876 00013007854817840017028824 00013007854817840017963235 00013007854817840018860166 df = read_csv('sample.csv') df.ID >> 0 -9223372036854775808 1 -9223372036854775808 2 -9223372036854775808 3 -9223372036854775808 4 -9223372036854775808 5 -9223372036854775808 6 -9223372036854775808 Name: ID น่าเสียดายที่การใช้ตัวแปลงให้ผลลัพธ์เดียวกัน df = read_csv('sample.csv', converters={'ID': str}) df.ID >> 0 -9223372036854775808 1 …

5
Java Casting แนะนำค่าใช้จ่ายหรือไม่? ทำไม?
มีค่าใช้จ่ายหรือไม่เมื่อเราโยนวัตถุประเภทหนึ่งไปยังอีกประเภทหนึ่ง? หรือคอมไพเลอร์เพียงแก้ไขทุกอย่างและไม่มีค่าใช้จ่ายในขณะทำงาน? นี่เป็นเรื่องทั่วไปหรือมีหลายกรณี? ตัวอย่างเช่นสมมติว่าเรามีอาร์เรย์ของ Object [] โดยที่แต่ละองค์ประกอบอาจมีประเภทที่แตกต่างกัน แต่เรารู้แน่นอนอยู่แล้วว่าองค์ประกอบ 0 เป็นสองเท่าองค์ประกอบ 1 คือสตริง (ฉันรู้ว่านี่เป็นการออกแบบที่ผิด แต่สมมติว่าฉันต้องทำสิ่งนี้) ข้อมูลประเภทของ Java ยังคงถูกเก็บไว้ตลอดเวลาหรือไม่ หรือทุกอย่างถูกลืมไปหลังจากการคอมไพล์แล้วและถ้าเราทำ (Double) องค์ประกอบ [0] เราก็จะทำตามตัวชี้และแปลความหมายของ 8 ไบต์นั้นเป็นสองเท่าคืออะไร? ฉันไม่ชัดเจนมากเกี่ยวกับวิธีการสร้างประเภทใน Java หากคุณมีคำแนะนำใหม่เกี่ยวกับหนังสือหรือบทความก็ขอบคุณเช่นกัน

13
ข้อผิดพลาด SQL“ ORA-01722: หมายเลขไม่ถูกต้อง”
สิ่งที่ง่ายมากสำหรับใครบางคนส่วนแทรกต่อไปนี้กำลังให้ไฟล์ ORA-01722: หมายเลขไม่ถูกต้อง ทำไม? INSERT INTO CUSTOMER VALUES (1,'MALADY','Claire','27 Smith St Caulfield','0419 853 694'); INSERT INTO CUSTOMER VALUES (2,'GIBSON','Jake','27 Smith St Caulfield','0415 713 598'); INSERT INTO CUSTOMER VALUES (3,'LUU','Barry','5 Jones St Malvern','0413 591 341'); INSERT INTO CUSTOMER VALUES (4,'JONES','Michael','7 Smith St Caulfield','0419 853 694'); INSERT INTO CUSTOMER VALUES (5,'MALADY','Betty','27 Smith …

4
ฉันจะให้การสนับสนุนนักแสดงที่กำหนดเองสำหรับชั้นเรียนของฉันได้อย่างไร
ฉันจะให้การสนับสนุนในการคัดเลือกชั้นเรียนของฉันเป็นประเภทอื่นได้อย่างไร ตัวอย่างเช่นถ้าฉันมีการใช้การจัดการ a ของตัวเองbyte[]และฉันต้องการให้คนอื่นส่งชั้นเรียนของฉันไปที่ a byte[]ซึ่งจะคืนสมาชิกส่วนตัวฉันจะทำอย่างไร เป็นเรื่องปกติหรือไม่ที่จะปล่อยให้พวกเขาร่ายสิ่งนี้เป็นสตริงหรือฉันควรจะลบล้างToString()(หรือทั้งสองอย่าง)
103 c#  casting 


14
TypeScript enum ไปยัง object array
ฉันมี enum กำหนดด้วยวิธีนี้: export enum GoalProgressMeasurements { Percentage = 1, Numeric_Target = 2, Completed_Tasks = 3, Average_Milestone_Progress = 4, Not_Measured = 5 } อย่างไรก็ตามฉันต้องการให้แสดงเป็นอาร์เรย์วัตถุ / รายการจาก API ของเราดังนี้: [{id: 1, name: 'Percentage'}, {id: 2, name: 'Numeric Target'}, {id: 3, name: 'Completed Tasks'}, {id: 4, name: 'Average Milestone Progress'}, {id: 5, …

2
เหตุใดจึงส่งค่าพารามิเตอร์ของฟังก์ชันที่ไม่ได้ใช้ให้เป็นโมฆะ
ในโครงการ C บางโครงการฉันเห็นรหัสนี้: static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) { (void)ud; (void)osize; /* some code not using `ud` or `osize` */ return ptr; } การร่ายทั้งสองเป็นโมฆะมีจุดประสงค์ใดหรือไม่?
98 c  casting  void 

2
เหตุใดฉันจึงพิมพ์ฟังก์ชันนามแฝงและใช้งานได้โดยไม่ต้องแคสต์
ใน Go หากคุณกำหนดประเภทใหม่เช่น: type MyInt int จากนั้นคุณไม่สามารถส่งผ่านMyIntไปยังฟังก์ชันที่คาดหวังว่าจะเป็น int หรือในทางกลับกัน: func test(i MyInt) { //do something with i } func main() { anInt := 0 test(anInt) //doesn't work, int is not of type MyInt } ละเอียด. แต่เหตุใดจึงใช้ฟังก์ชันเดียวกันนี้ไม่ได้ เช่น: type MyFunc func(i int) func (m MyFunc) Run(i int) { m(i) } func …
98 types  casting  go 

1
ลบ 1 วันจากวันที่ประทับเวลา
ฉันใช้ Datagrip สำหรับ Postgresql (ex: 2016-11-01 00:00:00)ฉันมีตารางที่มีข้อมูลวันที่ในรูปแบบเวลา ฉันต้องการที่จะสามารถ: ใช้ตัวดำเนินการทางคณิตศาสตร์เพื่อลบ 1 วัน กรองตามกรอบเวลาของวันนี้ -130 วัน แสดงโดยไม่มีส่วน hh / mm / ss ของตราประทับ (2016-10-31) แบบสอบถามเริ่มต้นปัจจุบัน: select org_id, count(accounts) as count, ((date_at) - 1) as dateat from sourcetable where date_at <= now() - 130 group by org_id, dateat ((date_at)-1)ประโยคในบรรทัด 1 ผลลัพธ์ใน: [42883] ข้อผิดพลาด: …

14
ทำไมต้องหลีกเลี่ยงการหล่อ? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ โดยทั่วไปฉันจะหลีกเลี่ยงการแคสต์ประเภทให้มากที่สุดเนื่องจากฉันรู้สึกว่ามีการฝึกฝนการเขียนโค้ดที่ไม่ดีและอาจได้รับโทษด้านประสิทธิภาพ แต่ถ้ามีคนขอให้ฉันอธิบายว่าทำไมถึงเป็นเช่นนั้นฉันก็คงมองพวกเขาเหมือนกวางในไฟหน้า แล้วทำไม / เมื่อไหร่หล่อไม่ดี? เป็นเรื่องทั่วไปสำหรับ java, c #, c ++ หรือทุกสภาพแวดล้อมรันไทม์ที่แตกต่างกันจัดการกับเงื่อนไขของมันเองหรือไม่? ยินดีต้อนรับเฉพาะสำหรับภาษาใด ๆ เช่นทำไมภาษา c ++ จึงไม่ดี
97 c#  java  c++  casting 

3
Int to Char ใน C #
วิธีที่ดีที่สุดในการแปลงค่า Int เป็น Char ที่เกี่ยวข้องใน Utf16 คืออะไรเนื่องจาก Int อยู่ในช่วงของค่าที่ถูกต้อง
97 c#  casting 

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