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

C # (ออกเสียงว่า "ดูคม") เป็นภาษาการเขียนโปรแกรมหลายกระบวนทัศน์ในระดับสูงพิมพ์แบบคงที่พัฒนาโดย Microsoft รหัส C # มักกำหนดเป้าหมายกลุ่มเครื่องมือ. NET ของ Microsoft และรันไทม์ซึ่งรวมถึง. NET Framework, .NET Core และ Xamarin เป็นต้น ใช้แท็กนี้สำหรับคำถามเกี่ยวกับโค้ดที่เขียนในข้อกำหนดทางการของ C # หรือ C #

20
C # infinite loop ที่ถูกต้องคืออะไรสำหรับ (;;) หรือ while (true)? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ย้อนกลับไปในวัน C / C ++ ของฉันเขียนโค้ด "ลูปไม่มีที่สิ้นสุด" เป็น while (true) รู้สึกเป็นธรรมชาติมากขึ้นและดูเหมือนชัดเจนสำหรับฉันเมื่อเทียบกับ for (;;) การเผชิญหน้ากับPC-lintในช่วงปลายทศวรรษ 1980 และการอภิปรายแนวทางปฏิบัติที่ดีที่สุดในภายหลังทำให้ฉันมีนิสัยนี้ ฉันได้เขียนรหัสลูปโดยใช้forคำสั่งควบคุม วันนี้เป็นครั้งแรกในระยะเวลาอันยาวนานและบางทีความต้องการครั้งแรกของฉันสำหรับการวนซ้ำที่ไม่มีที่สิ้นสุดในฐานะนักพัฒนา C # ฉันกำลังเผชิญกับสถานการณ์เดียวกัน หนึ่งในนั้นถูกต้องหรือไม่?
97 c#  infinite-loop 

11
ประสิทธิภาพของการกลับมาก่อนกำหนดในฟังก์ชัน
นี่เป็นสถานการณ์ที่ฉันพบบ่อยในฐานะโปรแกรมเมอร์ที่ไม่มีประสบการณ์และฉันสงสัยว่าโดยเฉพาะอย่างยิ่งสำหรับโครงการที่มีความทะเยอทะยานและใช้ความเร็วสูงของฉันฉันกำลังพยายามเพิ่มประสิทธิภาพ สำหรับภาษาหลัก ๆ เช่น C (C, objC, C ++, Java, C # ฯลฯ ) และคอมไพเลอร์ตามปกติฟังก์ชันทั้งสองนี้จะทำงานได้อย่างมีประสิทธิภาพหรือไม่ มีความแตกต่างในโค้ดที่คอมไพล์หรือไม่? void foo1(bool flag) { if (flag) { //Do stuff return; } //Do different stuff } void foo2(bool flag) { if (flag) { //Do stuff } else { //Do different stuff } } โดยทั่วไปแล้วจะมีโบนัส / …

2
MySql.Data.MySqlClient.MySqlException:“ โฮสต์ localhost ไม่รองรับการเชื่อมต่อ SSL”
ฉันใช้ MySql.Data 8.08 และ. NET Core เพื่อเชื่อมต่อกับ MySql 5.7.18 แต่เกิดข้อยกเว้นต่อไปนี้: MySql.Data.MySqlClient.MySqlException:“The host localhost does not support SSL connections.” จะจัดการกับมันอย่างไร?

24
ฉันสามารถตั้งค่าเทมเพลต HTML / อีเมลด้วย ASP.NET ได้หรือไม่
ฉันกำลังทำงานกับไซต์ที่จะส่งอีเมลจำนวนมาก ฉันต้องการตั้งค่าทั้งข้อความส่วนหัวและส่วนท้ายหรือแม้กระทั่งแม่แบบเพื่อให้ผู้ใช้แก้ไขอีเมลเหล่านี้ได้อย่างง่ายดายหากต้องการ หากฉันฝัง HTML ไว้ในตัวอักษรสตริง C # มันน่าเกลียดและพวกเขาจะต้องกังวลเกี่ยวกับการหลบหนี การรวมไฟล์แบบแบนสำหรับส่วนหัวและส่วนท้ายอาจใช้งานได้ แต่มีบางอย่างที่ไม่ถูกต้อง อะไรจะเหมาะที่สุดในการใช้.ASPXเพจเป็นเทมเพลตจากนั้นเพียงแค่บอกโค้ดของฉันให้แสดงหน้านั้นและใช้ HTML ที่ส่งกลับมาสำหรับอีเมล มีวิธีที่ดีและง่ายในการทำเช่นนี้หรือไม่? มีวิธีที่ดีกว่าในการแก้ปัญหานี้หรือไม่? อัปเดต: ฉันได้เพิ่มคำตอบที่ช่วยให้คุณสามารถใช้เพจ. aspx มาตรฐานเป็นเทมเพลตอีเมลได้ เพียงแค่แทนที่ตัวแปรทั้งหมดเช่นที่คุณทำตามปกติใช้ databinding เป็นต้นจากนั้นก็จับผลลัพธ์ของหน้าและ voila! คุณมีอีเมล HTML ของคุณ! อัปเดตด้วย CAVEAT !!!: ฉันใช้คลาส MailDefinition บนเพจ aspx บางเพจได้ดี แต่เมื่อพยายามใช้คลาสนี้ระหว่างกระบวนการเซิร์ฟเวอร์ที่กำลังทำงานอยู่มันล้มเหลว ฉันเชื่อว่าเป็นเพราะเมธอด MailDefinition.CreateMailMessage () ต้องการการควบคุมที่ถูกต้องในการอ้างอิงแม้ว่าจะไม่ได้ทำอะไรบางอย่างเสมอไป ด้วยเหตุนี้ฉันจึงขอแนะนำแนวทางของฉันโดยใช้เพจ aspx หรือแนวทางของ Mun โดยใช้เพจ ascx ซึ่งดูเหมือนจะดีกว่าเล็กน้อย
97 c#  asp.net  email  templates 

3
จับภาพผลลัพธ์การพิมพ์ Stored Procedure ใน. NET
เป็นไปได้หรือไม่ที่จะจับภาพเอาต์พุตการพิมพ์จากโพรซีเดอร์ที่จัดเก็บ T-SQL ใน. NET ฉันมีพร็อคดั้งเดิมจำนวนมากที่ใช้การพิมพ์เป็นวิธีการส่งข้อความผิดพลาด ตัวอย่างเป็นไปได้หรือไม่ที่จะเข้าถึง 'word' จากการทำตาม PROC -- The PROC CREATE PROC usp_PrintWord AS PRINT 'word' // Some C# Code to would like to pull out 'word' SqlCommand cmd = new SqlCommand("usp_printWord", TheConnection); cmd.CommandType = CommandType.StoredProcedure; // string ProcPrint = ???

4
ประสิทธิภาพที่แปลกประหลาดเพิ่มขึ้นในเกณฑ์มาตรฐานอย่างง่าย
เมื่อวานฉันพบบทความของ Christoph Nahr ชื่อ ".NET Struct Performance" ซึ่งเปรียบเทียบหลายภาษา (C ++, C #, Java, JavaScript) สำหรับวิธีการที่เพิ่มโครงสร้างสองจุด ( doubletuples) ตามที่ปรากฏเวอร์ชัน C ++ ใช้เวลาประมาณ 1,000ms ในการดำเนินการ (การทำซ้ำ 1e9) ในขณะที่ C # ไม่สามารถทำงานได้ต่ำกว่า ~ 3000ms ในเครื่องเดียวกัน (และทำงานได้แย่กว่าใน x64) เพื่อทดสอบด้วยตัวเองฉันใช้รหัส C # (และทำให้ง่ายขึ้นเล็กน้อยเพื่อเรียกเฉพาะเมธอดที่มีการส่งผ่านพารามิเตอร์ด้วยค่า) และรันบนเครื่อง i7-3610QM (บูสต์ 3.1Ghz สำหรับคอร์เดียว), RAM 8GB, Win8 1 โดยใช้. NET 4.5.2, …

7
การกระจายตัวของวัตถุขนาดใหญ่
แอปพลิเคชัน C # /. NET ที่ฉันกำลังทำงานอยู่มีปัญหาหน่วยความจำรั่วช้า ฉันใช้ CDB กับ SOS เพื่อตรวจสอบสิ่งที่เกิดขึ้น แต่ดูเหมือนว่าข้อมูลจะไม่สมเหตุสมผลดังนั้นฉันหวังว่าคุณคนใดคนหนึ่งอาจเคยมีประสบการณ์นี้มาก่อน แอปพลิเคชันกำลังทำงานบนเฟรมเวิร์ก 64 บิต มันกำลังคำนวณและจัดลำดับข้อมูลไปยังโฮสต์ระยะไกลอย่างต่อเนื่องและกำลังกดปุ่ม Large Object Heap (LOH) อยู่พอสมควร อย่างไรก็ตามวัตถุ LOH ส่วนใหญ่ที่ฉันคาดว่าจะเป็นแบบชั่วคราว: เมื่อการคำนวณเสร็จสมบูรณ์และถูกส่งไปยังโฮสต์ระยะไกลหน่วยความจำควรจะว่าง อย่างไรก็ตามสิ่งที่ฉันเห็นคืออาร์เรย์อ็อบเจ็กต์ (สด) จำนวนมากที่สอดแทรกด้วยบล็อกหน่วยความจำว่างเช่นการสุ่มเซกเมนต์จาก LOH: 0:000> !DumpHeap 000000005b5b1000 000000006351da10 Address MT Size ... 000000005d4f92e0 0000064280c7c970 16147872 000000005e45f880 00000000001661d0 1901752 Free 000000005e62fd38 00000642788d8ba8 1056 <-- 000000005e630158 00000000001661d0 …

1
เหตุใดคอมไพเลอร์ C # จึงคลั่งไคล้ในแบบสอบถาม LINQ ที่ซ้อนกันนี้
ลองคอมไพล์โค้ดต่อไปนี้แล้วคุณจะพบว่าคอมไพเลอร์ใช้ RAM มากกว่า 3 GB (หน่วยความจำว่างทั้งหมดในเครื่องของฉัน) และคอมไพล์นานมาก (อันที่จริงฉันได้รับข้อยกเว้น IO หลังจาก 10 นาที) using System; using System.Linq; public class Test { public static void Main() { Enumerable.Range(0, 1).Sum(a => Enumerable.Range(0, 1).Sum(b => Enumerable.Range(0, 1).Sum(c => Enumerable.Range(0, 1).Sum(d => Enumerable.Range(0, 1).Sum(e => Enumerable.Range(0, 1).Sum(f => Enumerable.Range(0, 1).Count(g => true))))))); } } ใครสามารถอธิบายพฤติกรรมที่น่าสงสัยนี้ได้หรือไม่? …
97 c#  linq 

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

6
จะทริกเกอร์เหตุการณ์เมื่อค่าของตัวแปรเปลี่ยนแปลงได้อย่างไร
ฉันกำลังสร้างแอปพลิเคชันใน C # โดยใช้ Visual Studio ฉันต้องการสร้างโค้ดเพื่อที่ว่าเมื่อตัวแปรมีค่าเป็น 1 โค้ดส่วนหนึ่งจะถูกนำออกมา ฉันรู้ว่าฉันสามารถใช้คำสั่ง if ได้ แต่ปัญหาคือค่าจะถูกเปลี่ยนแปลงในกระบวนการอะซิงโครนัสดังนั้นในทางเทคนิคคำสั่ง if อาจถูกละเว้นก่อนที่ค่าจะเปลี่ยนไป เป็นไปได้หรือไม่ที่จะสร้างตัวจัดการเหตุการณ์เพื่อที่เมื่อค่าตัวแปรเปลี่ยนแปลงเหตุการณ์จะถูกทริกเกอร์ ถ้าเป็นเช่นนั้นฉันจะทำอย่างไร เป็นไปได้อย่างสมบูรณ์ว่าฉันอาจเข้าใจผิดว่าคำสั่ง if ทำงานอย่างไร! ความช่วยเหลือใด ๆ จะได้รับการชื่นชมมาก

11
การอ่านไฟล์ข้อความขนาดใหญ่พร้อมสตรีมใน C #
ฉันมีงานที่น่ารักในการหาวิธีจัดการไฟล์ขนาดใหญ่ที่โหลดลงในโปรแกรมแก้ไขสคริปต์ของแอปพลิเคชันของเรา (เหมือนกับVBAสำหรับผลิตภัณฑ์ภายในของเราสำหรับมาโครด่วน) ไฟล์ส่วนใหญ่มีขนาดประมาณ 300-400 KB ซึ่งโหลดได้ดี แต่เมื่อพวกเขาไปเกิน 100 MB กระบวนการนี้ก็มีช่วงเวลาที่ยากลำบาก (ตามที่คุณคาดหวัง) สิ่งที่เกิดขึ้นคือไฟล์ถูกอ่านและถูกส่งไปยัง RichTextBox ซึ่งจะถูกนำทางไป - อย่ากังวลกับส่วนนี้มากเกินไป นักพัฒนาที่เขียนโค้ดเริ่มต้นเพียงแค่ใช้ StreamReader และทำ [Reader].ReadToEnd() ซึ่งอาจใช้เวลาสักพักจึงจะเสร็จสมบูรณ์ งานของฉันคือทำลายโค้ดนี้ออกอ่านเป็นชิ้น ๆ เป็นบัฟเฟอร์และแสดงแถบความคืบหน้าพร้อมตัวเลือกในการยกเลิก สมมติฐานบางประการ: ไฟล์ส่วนใหญ่จะมีขนาด 30-40 MB เนื้อหาของไฟล์เป็นข้อความ (ไม่ใช่ไบนารี) บางส่วนเป็นรูปแบบ Unix บางส่วนเป็น DOS เมื่อดึงเนื้อหามาแล้วเราจะหาสิ่งที่ใช้เทอร์มิเนเตอร์ ไม่มีใครกังวลเมื่อโหลดเวลาที่ใช้ในการแสดงผลใน richtextbox มันเป็นเพียงการโหลดข้อความเริ่มต้น ตอนนี้สำหรับคำถาม: ฉันสามารถใช้ StreamReader จากนั้นตรวจสอบคุณสมบัติ Length (ดังนั้น ProgressMax) และออก Read สำหรับขนาดบัฟเฟอร์ที่ตั้งไว้และวนซ้ำในขณะที่วนซ้ำWHILSTภายในโปรแกรมทำงานเบื้องหลังดังนั้นจึงไม่บล็อกเธรด UI หลัก …

8
รับผู้ใช้ปัจจุบันภายในแอ็คชัน ApiController โดยไม่ต้องส่ง userID เป็นพารามิเตอร์
เราจะรับผู้ใช้ปัจจุบันภายในแอ็คชัน ApiController ที่ปลอดภัยได้อย่างไรโดยไม่ส่ง userName หรือ userId เป็นพารามิเตอร์ เราถือว่าสิ่งนี้พร้อมใช้งานเนื่องจากเราอยู่ในการดำเนินการที่ปลอดภัย การดำเนินการอย่างปลอดภัยหมายความว่าผู้ใช้ได้ตรวจสอบสิทธิ์แล้วและคำขอมีโทเค็นผู้ถือ เนื่องจาก WebApi ได้ให้สิทธิ์ผู้ใช้อาจมีวิธีการเข้าถึง userId ในตัวโดยไม่ต้องส่งผ่านเป็นพารามิเตอร์การดำเนินการ

4
ฉันจะทราบความกว้างปัจจุบันของแถบเลื่อนระบบได้อย่างไร
ดังที่คุณทราบเราสามารถปรับแต่งความกว้างของแถบเลื่อนในคุณสมบัติการแสดงผล -&gt; ลักษณะที่ปรากฏ -&gt; ขั้นสูง -&gt; รายการ: ScrollBar ค่าดีฟอลต์คือ 17 อย่างไรก็ตามฉันไม่สามารถสันนิษฐานได้ว่าเป็นเช่นนี้เสมอไปฉันจะดึงค่านี้ได้หรือไม่?
97 c#  winforms 

8
ส่งไฟล์ผ่าน HTTP POST ด้วย C #
ฉันค้นหาและอ่านเรื่องนั้นมาตลอดและไม่สามารถปรับอะไรที่เป็นประโยชน์ได้เลย ฉันกำลังเขียนแอป C # win ขนาดเล็กที่อนุญาตให้ผู้ใช้ส่งไฟล์ไปยังเว็บเซิร์ฟเวอร์ไม่ใช่โดย FTP แต่เป็น HTTP โดยใช้ POST คิดว่ามันเหมือนเว็บฟอร์ม แต่ทำงานบนแอพพลิเคชั่น windows ฉันมีวัตถุ HttpWebRequest ของฉันที่สร้างขึ้นโดยใช้สิ่งนี้ HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest และยังตั้งMethod, ContentTypeและContentLengthคุณสมบัติ แต่นั่นคือสิ่งที่ฉันไปได้ไกล นี่คือรหัสของฉัน: HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.KeepAlive = false; req.Method = "POST"; req.Credentials = new NetworkCredential(user.UserName, user.UserPassword); req.PreAuthenticate = true; req.ContentType = file.ContentType; …
97 c#  http  post  system.net 

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