ฉันสามารถหาค่าส่งคืนก่อนที่จะส่งคืนในขณะที่ดีบักใน Visual Studio ได้หรือไม่


387

ใช้ฟังก์ชั่นต่อไปนี้:

DataTable go() {
    return someTableAdapter.getSomeData();
}

เมื่อฉันตั้งเบรกพอยต์ในฟังก์ชั่นนี้มีความเป็นไปได้ที่จะตรวจสอบค่าที่ส่งคืนหรือไม่? go()เชื่อมต่อโดยตรงกับดาต้ากริดใน.aspxหน้า

วิธีเดียวที่จะตรวจสอบ DataTable ที่ส่งคืนคือการใช้ตัวแปรชั่วคราว อย่างไรก็ตามมันไม่สะดวกนัก ไม่มีทางอื่นอีกแล้วเหรอ?


1
คุณสามารถเพิ่มนาฬิกาได้หากคุณเลื่อนสำรองสายเรียกซ้อน
Chris S

คุณเคยสามารถทำสิ่งนี้ใน VB6 ฉันดูเหมือนจะจำได้ แต่กลับมาแล้วไวยากรณ์สำหรับฟังก์ชั่นที่เกี่ยวข้องกับการตั้งค่าฟังก์ชั่นที่จะส่งคืนค่า ...
นีลบาร์นเวล

5
ความคิดเห็นสำหรับผู้ใช้ Visual C ++: พิมพ์ $ ReturnValue ในหน้าต่าง Immediate หรือหน้าต่าง Watch อย่างน้อยใน VS 2010 ของฉันก็ใช้งานได้!
sergiol

9
สำหรับ VS2015 ใช้ $ ReturnValue1 .. ในกรณีที่คุณไม่ต้องการอ่านคำตอบ 20 ข้อและ 100 ความคิดเห็นด้านล่าง!
felickz

3
2019 คำตอบของสิ่งนี้คืออะไร? คำตอบเหล่านี้ล้าสมัยสุด ๆ
dylanh724

คำตอบ:


264

ไม่ใช่ที่ฉันรู้ โปรดทราบว่าถ้าคุณทำเพิ่มตัวแปรก็จะได้รับการลบออกโดยคอมไพเลอร์ในรุ่นสร้างต่อไป ...

ปรับปรุง: ฟังก์ชั่นนี้ได้รับการเพิ่ม VS2013 คุณสามารถดูค่าส่งคืนในหน้าต่างรถยนต์หรือใช้$ReturnValueในหน้าต่างเฝ้าดู / ทันที

ค่าสามารถเห็นได้โดยตรงหลังจากกลับมาจากฟังก์ชั่นดังนั้นวิธีที่ง่ายที่สุดในการเข้าถึงคือการใส่เบรกพอยต์ในการเรียกใช้ฟังก์ชั่นและก้าวข้าม (F10) การโทร


อัปเดตสำหรับ VS2015: boo! น่าเสียดายที่ดูเหมือนว่าจะไม่อยู่ใน VS2015 (devenv v14)
อัปเดตสำหรับ VS2017: กลับมา (devenv v15)


12
เหตุผลในการละทิ้งเทมเปอร์นั้นคือการอ่าน & สไตล์ไม่ใช่ประสิทธิภาพใช่ไหม?
orip

8
เป็นไปได้ตั้งแต่ VS 2010 ด้วย IntelliTrace: blogs.msdn.com/b/habibh/archive/2009/10/23/…
Daniel Hilgarth

2
Intellitrace มีเฉพาะใน VS Ultimate Edition
JMGH

3
@MarcGravell คำตอบของคุณไม่ถูกต้อง ! แน่นอนว่าฉันใช้เวลาหกปีระหว่างการตอบของคุณกับ MS ที่ปล่อยคุณลักษณะนั้นใน VS13 แต่ยัง หากคุณเพิ่งเพิ่ม " ในขณะนี้ " เพื่อเป็นข้อจำกัดความรับผิดชอบ ... (ไม่ฉันไม่หน่วงมันเป็นเรื่องตลกแน่นอนคุณเป็นคนรักพระเจ้าคู่ครอง)
Konrad Viltersten

6
@MarcGravell สำหรับ VS2015: $ ReturnValue1 ใช้งานได้! (ทดสอบในรุ่นที่ดีที่สุด)
GY

58

ซึ่งสามารถทำได้ใน Visual Studio 2013 ด้วย CLR 4.5.1 ตามเว็บไซต์ความคิดเห็นของลูกค้า ไม่มีในเวอร์ชันก่อนหน้าสำหรับ C #

(Visual Studio 2008 และรุ่นก่อนหน้านี้รองรับสำหรับ VB.NET ซึ่งจะพร้อมใช้งานสำหรับนักพัฒนา C / C ++ เสมอ)


1
คุณทำสิ่งนี้ใน Visual Studio 2010 C ++ ได้อย่างไร
ผู้ใช้

Microsoft Connect ระบุว่ามีปัญหาพื้นฐานเกี่ยวกับรหัสที่ได้รับการจัดการซึ่งป้องกันการใช้งานในลักษณะที่เชื่อถือได้:
Dan Solovay

@DanSolovay คำที่ใช้คือ "เราไม่สามารถทำสิ่งที่ถูกต้องอย่างสม่ำเสมอ" (สำหรับ VS11) แต่พวกเขา "ต้องการนำสิ่งนี้กลับมา" และ "กำลังดูวิธีแก้ปัญหาที่เป็นไปได้จำนวนหนึ่ง"
Alex Angas

รายการเชื่อมต่อค้าง สถานที่นี้ดูเหมือนจะถูกละทิ้ง ... : (((
Softlion

1
เป็นไปได้ตั้งแต่ VS 2010 ด้วย IntelliTrace: blogs.msdn.com/b/habibh/archive/2009/10/23/…
Daniel Hilgarth

25

ฉันยอมรับว่านี่เป็นสิ่งที่มีประโยชน์มากที่จะมี: ไม่เพียงแค่เห็นค่าตอบแทนของวิธีก่อนที่จะก้าวออกไป แต่ยังเห็นค่าตอบแทนของวิธีที่ฉันเพิ่งก้าวข้าม ฉันใช้งานเป็นส่วนหนึ่งของส่วนขยายเชิงพาณิชย์ไปยัง Visual Studio ชื่อ " OzCode "

ด้วยวิธีนี้คุณสามารถดูค่าที่ส่งคืนเมธอดได้โดยตรงบนตัวแก้ไขโค้ดเนื่องจากเป็นจอแสดงผล HUD:

การสร้างงบ

สำหรับข้อมูลเพิ่มเติมโปรดดูวิดีโอนี้


23

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

สำหรับผู้ที่มีประสบการณ์ในการดีบักโค้ด C ++ หรือ VB6 แบบดั้งเดิมคุณอาจใช้คุณสมบัติที่มีฟังก์ชั่นการคืนค่าให้คุณในหน้าต่างรถยนต์ ขออภัยฟังก์ชันนี้ไม่มีอยู่สำหรับรหัสที่ได้รับการจัดการ ในขณะที่คุณสามารถแก้ไขปัญหานี้ได้ด้วยการกำหนดค่าส่งคืนให้กับตัวแปรโลคัล แต่สิ่งนี้ไม่สะดวกเนื่องจากต้องการแก้ไขรหัสของคุณ ในรหัสที่ได้รับการจัดการมันมีความซับซ้อนกว่ามากในการพิจารณาว่าค่าส่งคืนของฟังก์ชันที่คุณก้าวข้ามไปนั้นคืออะไร เราตระหนักว่าเราไม่สามารถทำสิ่งที่ถูกต้องที่นี่อย่างสม่ำเสมอดังนั้นเราจึงนำคุณลักษณะออกแทนที่จะให้ผลลัพธ์ที่ไม่ถูกต้องในตัวดีบัก อย่างไรก็ตามเราต้องการนำสิ่งนี้กลับมาให้คุณและทีม CLR และ Debugger ของเรากำลังดูวิธีแก้ไขปัญหาที่เป็นไปได้จำนวนหนึ่ง น่าเสียดายที่นี่ไม่ได้เป็นส่วนหนึ่งของ Visual Studio 11

https://connect.microsoft.com/VisualStudio/feedback/details/597933/add-a-return-pseudo-variable-to-the-visual-studio-debugger-for-net-code


1
ตาม @Alex ด้านบน ( stackoverflow.com/a/3714884/402949 ) นี้สามารถใช้ได้สำหรับ VS2013 ที่มี CLR 4.5
Dan Solovay

21

เกี่ยวกับ Visual Studio 2015:

ตามคำตอบที่ยอมรับในปัจจุบันโดย Marc Gravell:

นี้ฟังก์ชั่นได้รับการเพิ่ม Visual Studio 2013 คุณสามารถดูค่าส่งคืนในหน้าต่างรถยนต์หรือใช้ $ ReturnValue ในหน้าต่างเฝ้าดู / ทันที

คำตอบนั้นยังระบุด้วยว่าฟังก์ชั่นนี้ไม่สามารถใช้งานได้ใน Visual Studio 2015 ซึ่งไม่เป็นจริงทั้งหมด ในการตรวจสอบค่าส่งคืนของการเรียกเมธอดมีหมายเหตุต่อไปนี้:

คุณต้องเปิดใช้งานตัวประเมินผลนิพจน์ดั้งเดิมเพื่อให้ได้รับการยอมรับ$ ReturnValue (เครื่องมือ / ตัวเลือก / การแก้จุดบกพร่อง / ใช้ตัวประเมินนิพจน์ดั้งเดิม C # และ VB ) มิฉะนั้นคุณสามารถใช้$ ReturnValue1

ฉันทดสอบสิ่งนี้ใน Visual Studio 2015 Enterprise:

  • ด้วยมรดกประเมินผลการแสดงออกปิด: เพียง $ ReturnValue1งาน
  • ด้วยการเปิดใช้งานตัวประเมินนิพจน์ดั้งเดิม: ทั้ง $ ReturnValue และ $ ReturnValue1ทำงาน

3
ดูเหมือนจะไม่จำเป็นอีกต่อไป ในการอัปเดต VS 2015 อัปเดต 3 ฉันปิดใช้งานผู้ประเมินดั้งเดิมแล้ว$ReturnValueทำงาน อย่างไรก็ตามค่าส่งคืนจะไม่ปรากฏที่ใดก็ได้หากคุณUse managed compatibility modeเปิดใช้งานตัวเลือกการดีบัก
Nick

13

หากคุณไปที่เมนูเครื่องมือตัวเลือก IntelliTrace และเปลี่ยนการตั้งค่าเพื่อรวบรวมกิจกรรมและข้อมูลการโทร

คุณสามารถกลับไปที่เหตุการณ์การโทรก่อนหน้า ( Ctrl+ Shift+ F11) และดูค่าชั่วคราวที่ส่งคืนจากการเรียกใช้เมธอดในหน้าต่างรถยนต์เป็นลูกของชื่อเมธอด

นี่ไม่ใช่การแสดงค่าตอบแทนสำหรับวิธีการที่คุณใช้มันจะแสดงค่าตอบแทนของวิธีสุดท้ายที่เรียกว่าในวิธีการปัจจุบัน

ดังนั้นจึงเป็นเรื่องที่ดีสำหรับ

DataTable go(){return someTableAdapter.getSomeData();}

someTableAdapter.getSomeData()ในขณะที่มันแสดงให้คุณเห็นค่าตอบแทนสำหรับ

แต่ไม่ใช่สำหรับ:

int go(){return 100 * 99;}

12

เคล็ดลับเก่าจาก. NET วันก่อน: เปิดหน้าต่างการลงทะเบียนและดูค่าของการลงทะเบียน EAX สิ่งนี้มีค่าตอบแทนของฟังก์ชั่นสุดท้ายที่เรียกว่า


1
+1 สำหรับโรงเรียนเก่าที่อยู่ใกล้กับวิธีการที่เป็นโลหะ - สิ่งนี้จะไม่สามารถใช้ได้กับค่าส่งคืนทั้งหมด (และมันก็ขึ้นอยู่กับ JIT'er แน่นอน - ใครจะรู้ว่าการเพิ่มประสิทธิภาพที่บ้าสุด ๆ ) สำหรับประเภทที่สมบูรณ์จะ (ส่วนใหญ่?) จะทำงาน ประเภทค่าขนาดใหญ่เป็นเรื่องที่แตกต่างกัน (และเท่าที่ฉันจำได้จากโพสต์บล็อกบางประเภทจะไม่ปรากฏใน VS2013 เช่นกัน)
JimmiTh

10

ก้าวออกจากวิธี go () โดยใช้ Shift-F11 จากนั้นในหน้าต่างการแก้ปัญหา "รถยนต์" มันจะแสดงค่าตอบแทนของการเรียกใช้เมธอดซึ่งเพิ่งแตกออกจากสแต็ก (ในกรณีนี้วิธีการ go () ซึ่งเป็น คุณต้องการอะไร). นี่คือพฤติกรรมใน Visual Studio 2005 ฉันไม่ได้ใช้ Visual Studio 2008 ดังนั้นฉันจึงไม่ทราบว่าสิ่งนี้จะทำงานในลักษณะเดียวกันกับรุ่นนั้นหรือไม่


ฉันลองสิ่งนี้ทั้งใน VS2005 และ VS2008 แต่ฉันไม่เห็นมันจริงๆ ฉันเปิดหน้าต่าง "รถยนต์" แต่เมื่ออยู่ในฟังก์ชั่น "ไป" หน้าต่างรถยนต์ก็ว่างเปล่า นอกจากนี้เมื่อก้าวออกจากฟังก์ชั่น (วงเล็บปีกกาปิดของฟังก์ชั่นเป็นสีเหลือง) คุณสามารถให้คำใบ้อีกหนึ่งข้อให้ฉันได้หรือไม่
doekman

ฉันคาดว่าหน้าต่างรถยนต์จะว่างเปล่าในขณะที่ฟังก์ชั่น INSIDE () คุณต้องทำตามขั้นตอนอย่างสมบูรณ์ของฟังก์ชั่น (เช่นเคอร์เซอร์ตรวจแก้จุดบกพร่องควรชี้ไปที่ฟังก์ชั่นที่มี CALLED go ()) จากนั้นคุณจะเห็นค่าส่งคืนสำหรับไป () ในหน้าต่างรถยนต์
LeopardSkinPillBoxHat

@LeopardSkinPillBoxHat: ไม่สามารถใช้งานได้แม้จะมีคำใบ้เพิ่มเติมของคุณ คุณลองทำสิ่งนี้ใน Visual Basic หรือไม่? แต่ดูเหมือนว่ามันจะมีการสนับสนุนที่ดีขึ้นสำหรับการสังเกตและการเปลี่ยนแปลงค่าที่ส่งคืน ...
โรมัน Starkov

@romkyns - มีอะไรปรากฏในหน้าต่าง "รถยนต์" สำหรับคุณ มันไม่แสดงบรรทัดที่ระบุว่าสิ่งที่เรียกว่าฟังก์ชั่นสุดท้ายส่งกลับ?
LeopardSkinPillBoxHat

2
@LeopardSkinPillBoxHat: ไม่มันไม่ได้ทำใน C # PS ว้าวฉันต้องใช้เวลาสักพักกว่าจะได้เห็นมันอีกครั้ง
Roman Starkov

7

ใช่มีวิธีที่ดีมาก ข้อเสียเปรียบอย่างหนึ่งที่สำคัญคือคุณต้องรอ 5 หรือ 6 ปี เนื่องจากฉันเห็นว่าคุณโพสต์ในเดือนพฤศจิกายน 2008 ฉันขอแนะนำให้คุณ waaaaaa ...

... aaaait และvoilà! สำหรับคุณแล้ว MS ได้เปิดตัวVisual Studio 2013ล่าสุดซึ่งเป็นคุณลักษณะเริ่มต้นที่สามารถเข้าถึงได้จากเมนูขณะที่ทำงานในโหมดดีบั๊ก (เมนูดีบั๊กWindowsรถยนต์ )


@Doug เนื่องจากคำถามถูกถามเมื่อพฤศจิกายน 2551 และคำตอบของฉันมาถึงกันยายน 2014 โปสเตอร์ต้นฉบับอาจเป็นที่น่าพอใจและไม่ต้องการย้ายเครดิต แต่ฉันเห็นด้วยกับคุณ - ฉันจะไม่รังเกียจคำตอบของฉันอีกต่อไป ฉันชอบ upsies และตัวแทนกำไร :)
Konrad Viltersten

มีปัญหานี้ในวันนี้ ขอขอบคุณที่ตอบกลับในปี 2014 แม้ว่าปัญหาเริ่มต้นของปี 2551 คำตอบของคุณคือสิ่งที่ฉันกำลังมองหา
AP

@AP ไม่มีปัญหา รู้สึกเหมือนเป็นเครื่องย้อนเวลาเพื่อดูโพสต์นี้ ระเบิดจากอดีตฮิฮิ
Konrad Viltersten

5

มีวิธีแก้ไขปัญหามากมาย แต่ไม่มีอะไรที่น่าพอใจ

หากต้องการอ้างอิง John Skeet ด้านล่าง (แสดงความคิดเห็นกับคำตอบที่ถูกลบตอนนี้):

ยังดูไม่สะดวกสำหรับฉัน - โดยเฉพาะถ้าคุณไม่ทราบว่าจะต้องส่งคืนค่าใดก่อนที่คุณจะเริ่มแก้ไขข้อบกพร่อง ฉันไม่ต้องการที่จะมีตัวแปรชั่วคราวที่ทำให้รหัสของฉันยุ่งเหยิงทุกครั้งที่ฉันส่งคืนอะไรเลย

ในทางทฤษฎีดีบักเกอร์อาจมีreturnตัวแปรที่หลากหลาย หลังจากทั้งหมด: มันเป็นเพียงตัวแปรในสแต็ก:

unsafe {
  int * sp = stackalloc int[1];
  try {
    return a+b;
  }
  finally {
    Trace.WriteLine("return is " + *(sp+3));
  }
}

ดังนั้นให้พิจารณาคำขอคุณสมบัติสำหรับ Visual Studio


มีความแตกต่างค่อนข้างมากระหว่างตัวแปร (ภายในที่กำหนดอย่างชัดเจน) และค่าบนสแต็ก มันเป็นค่าของ stack แต่ไม่ใช่ตัวแปร (= local)
Marc Gravell

@Marc: ฉันไม่แน่ใจว่า CLR ทำงานอย่างไร แต่คอมไพเลอร์จำนวนมากวางอาร์กิวเมนต์ของฟังก์ชันบนสแต็กด้านล่างตัวชี้สแต็ก (sp) และตัวแปรท้องถิ่นบนสแต็กเหนือสแต็คตัวชี้ นั่นเป็นเพียงสิ่งที่ฉันพยายามแสดง และตกลงเมื่อค่าส่งคืนเป็นประเภทการอ้างอิงคุณจะได้รับค่าตัวชี้บางอย่าง
doekman

1
ไม่จำเป็นต้องอยู่บนกองซ้อน อันที่จริง, ถ้าคุณดู Debug -> การลงทะเบียนคุณมีแนวโน้มที่จะเห็นมันใน EAX
Mark Sowul

5

ฉันต้องการขยายตามคำตอบของ PascalKเพื่อให้สิ่งนี้ทำงานใน Visual Studio 2015 เนื่องจากมีคุณสมบัติที่ซ่อนอยู่ซึ่งไม่ได้บันทึกไว้ในการตรวจสอบค่าส่งคืนของการเรียกใช้เมธอดการตรวจสอบค่าโทรกลับมาของวิธีการ

หากคุณมีการเรียกใช้ฟังก์ชันซ้อนกันตัวแปรหลอก$ResultValueXจะถูกสร้างขึ้นโดยอัตโนมัติโดยที่ X อ้างถึงคำสั่งเรียกใช้ฟังก์ชัน ดังนั้นหากคุณมีการโทรเช่นMultiply(Five(), Six())จะสร้างตัวแปรหลอกเทียมต่อไปนี้:

Five()     | $ResultValue1 = 5
Six()      | $ResultValue2 = 6
Multiply() | $ResultValue3 = 30


2

วิธีเดียวที่ฉันรู้คือการวางเบรกพอยต์ในบรรทัดส่งคืนจากนั้นเรียกหน้าต่างQuick Watchและป้อนนิพจน์ที่ส่งคืน:

someTableAdapter.getSomeData();

แต่จะใช้งานได้ก็ต่อเมื่อการโทรไม่เปลี่ยนสถานะของวัตถุใด ๆ (เนื่องจากจะมีการเรียกครั้งที่สองเป็นวิธีการเดียวกันเมื่อคุณจะดำเนินการเรียกใช้ต่อไป)


5
วิธีนี้ใช้ได้เฉพาะในกรณีที่การแสดงออกของคุณไม่มี lambdas
Roman Starkov

1

คุณสามารถขอให้ประเมินค่าในหน้าต่างกลางได้เช่นกันหากไม่ได้ตั้งค่าสถานะหรือตัวแปรอื่น ๆ แต่จะส่งคืนเฉพาะบางอย่างเท่านั้น


คุณจำเป็นต้องมีแลมบ์ดาในคำถามที่ผมใช้หน้าต่างทันทีบางครั้งมากเกินไป
คริส S

1

ฉันคิดว่าคุณสามารถตรวจสอบสิ่งนี้ได้โดยดูที่ RAX register ในหน้าต่าง Registers (Debug / Windows / Registers) หลังจากก้าวออกไป (SHIFT + F11) ของฟังก์ชั่นให้ตรวจสอบการลงทะเบียน RAX ฉันไม่รู้ความจริง แต่เมื่อดวงจันทร์คุณสามารถตรวจสอบการลงทะเบียน (ก่อน. NET วัน) และดูค่าส่งคืนที่นั่น มันอาจเป็นการรวมกันของ RAX และ RBX เป็นต้น


1

การเปิดหน้าต่าง Debug → Autos จะทำให้คุณปิด มันจะไม่แสดงค่าส่งคืนจริง แต่จะแสดงสิ่งที่ถูกประเมินในคำสั่งส่งคืน


2
ไม่สามารถรับหน้าต่าง VS2008 รถยนต์เพื่อแสดงอะไรเช่นนั้น คุณช่วยอธิบายได้ไหม?
Roman Starkov

return x + y; สิ่งที่ฉันหมายถึงคือถ้าคุณตั้งค่าเบรกพอยต์ในบรรทัดนี้จากนั้นหน้าต่าง Debug-Autos ของคุณจะแสดงค่าปัจจุบันสำหรับ x และ y อย่างที่ฉันบอกไปมันแค่ทำให้คุณสนิท เพียงแค่พยายามให้ความช่วยเหลือ ฉันไม่คิดว่าสมควรได้รับ downvote
GeekyMonkey

1

ใช่โดยเปลี่ยนไปใช้ VB.NET ; P (คุณเพิ่งพูดว่า "Visual Studio".)

ตราบเท่าที่ฉันจำได้ (จาก Visual Basic ถึง VB.NET ทุกรุ่น) คุณสามารถสืบค้นชื่อฟังก์ชันได้ง่ายๆ มัน "ฟังก์ชั่น" เช่นตัวแปรท้องถิ่นที่ประกาศโดยปริยายที่จุดเริ่มต้นของฟังก์ชั่นและมูลค่าปัจจุบันของมันก็ยังใช้เป็นค่าตอบแทนเมื่อใดก็ตามที่ฟังก์ชั่นออกจากผ่านคำสั่งที่ไม่ใช่ผลตอบแทนหมายถึง (เช่นExit Functionหรือเพียงแค่ล้มผ่าน) และแน่นอนเมื่อ ใช้คำสั่ง return

มันยังถูกตั้งค่าเป็นนิพจน์ของคำสั่ง return เช่นเดียวกับตัวแปรโลคัลค่าของมันสามารถถูกตรวจสอบ ณ จุดใด ๆ ของการดำเนินการภายในฟังก์ชั่น (รวมถึงหลังจากดำเนินการคำสั่ง return) C # ไม่มีสิ่งนี้และควร

ฟีเจอร์ VB.NET นั้นเล็กน้อย (รวมถึงExit Functionคำสั่งที่เปิดใช้งาน - ฟีเจอร์อื่น C # ไม่มีและควร) มีประโยชน์มากในรูปแบบของการตั้งโปรแกรมการป้องกันฉันฝึกที่ฉันมักจะเริ่มต้นชื่อฟังก์ชั่นเป็นความล้มเหลว คำสั่งแรก จากนั้นที่จุดล้มเหลวใด ๆ (ซึ่งมักเกิดขึ้นบ่อยกว่าคะแนนความสำเร็จ) ฉันสามารถเรียกExit Functionคำสั่ง (เช่นโดยไม่ต้องทำซ้ำนิพจน์ความล้มเหลว / ค่าเริ่มต้นหรือแม้แต่ชื่อคงที่ / ตัวแปร)


1

คำตอบที่ยอมรับนั้นทำงานไม่ถูกต้องกับ Visual Studio 2015 แต่การวางจุดพักบนบรรทัดสุดท้ายของวิธีการและการกดF10จะทำให้นิพจน์ทั้งหมดของค่าส่งคืนลงในหน้าต่างของชาวบ้าน


คุณอาจแก้ไขคำตอบที่ยอมรับเพื่อรวมความคิดเห็นของคุณ
doekman

0

คุณอาจจะพยายามที่จะเลือก"someTableAdapter.getSomeData();"คลิกขวาบนมันและไปอย่างรวดเร็วดู


-1

ลากแล้วปล่อยนิพจน์ส่งคืนลงในหน้าต่างดู

ตัวอย่างเช่นในคำสั่ง

return someTableAdapter.getSomeData();

ลากแล้ววาง

someTableAdapter.getSomeData()

เข้าไปในหน้าต่างดูแล้วคุณจะเห็นค่า

คุณสามารถทำสิ่งนี้เพื่อแสดงออกใด ๆ


2
ปัญหาที่เกิดขึ้นคือนิพจน์ถูกประเมินสองครั้ง
doekman

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