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

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

7
กรอบงาน C # DI / IoC หลักเปรียบเทียบได้อย่างไร [ปิด]
ปิดปิดคำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เมื่อมีความเสี่ยงในการก้าวเข้าสู่ดินแดนสงครามศักดิ์สิทธิ์จุดแข็งและจุดอ่อนของกรอบ DI / IoC ที่ได้รับความนิยมเหล่านี้คืออะไรและใครจะถือว่าดีที่สุดได้อย่างง่ายดาย .. : Ninject เอกภาพ Castle.Windsor Autofac StructureMap มี DI / IoC Frameworks อื่น ๆ สำหรับ C # ที่ฉันไม่ได้ระบุไว้ที่นี่หรือไม่? ในบริบทของกรณีการใช้งานของฉันฉันกำลังสร้างแอป WPF ของลูกค้าและโครงสร้างพื้นฐานบริการ WCF / SQL ใช้งานง่าย (โดยเฉพาะอย่างยิ่งในแง่ของไวยากรณ์ที่ชัดเจนและรัดกุม) เอกสารที่สอดคล้องกันการสนับสนุนชุมชนที่ดีและประสิทธิภาพเป็นปัจจัยสำคัญทั้งหมด ในการเลือกของฉัน ปรับปรุง: ทรัพยากรและคำถามซ้ำ ๆ ที่อ้างถึงดูเหมือนจะล้าสมัยใครที่มีความรู้ในกรอบเหล่านี้จะออกมาข้างนอกและให้ข้อมูลเชิงลึกที่แท้จริงบ้างไหม? ฉันตระหนักว่าความคิดเห็นส่วนใหญ่ในเรื่องนี้มีแนวโน้มที่จะลำเอียง แต่ฉันหวังว่าจะมีคนใช้เวลาศึกษากรอบการทำงานเหล่านี้ทั้งหมดและมีการเปรียบเทียบวัตถุประสงค์อย่างน้อยโดยทั่วไป ฉันค่อนข้างเต็มใจที่จะทำการสอบสวนของตัวเองหากยังไม่เคยทำมาก่อน แต่ฉันคิดว่านี่เป็นสิ่งที่คนอย่างน้อยสองสามคนได้ทำไปแล้ว อัปเดตที่สอง: หากคุณมีประสบการณ์กับภาชนะ …

16
คุณจะทำแบบสอบถาม "ไม่ได้อยู่ใน" กับ LINQ อย่างไร
ฉันมีสองคอลเล็กชันที่มีคุณสมบัติEmailในทั้งสองคอลเลกชัน ฉันต้องการรับรายการในรายการแรกที่Emailไม่มีอยู่ในรายการที่สอง ด้วย SQL ฉันจะใช้ "ไม่ได้อยู่ใน" แต่ฉันไม่รู้ว่าเทียบเท่าใน LINQ นั่นเป็นวิธีที่ทำ? จนถึงตอนนี้ฉันได้เข้าร่วม ... var matches = from item1 in list1 join item2 in list2 on item1.Email equals item2.Email select new { Email = list1.Email }; แต่ฉันเข้าร่วมไม่ได้เพราะฉันต้องการความแตกต่างและการเข้าร่วมจะล้มเหลว ฉันต้องการวิธีการใช้ประกอบด้วยหรือมีอยู่ฉันเชื่อว่า ฉันยังไม่พบตัวอย่างที่จะทำเช่นนั้น
307 c#  linq 

7
คุณจะได้ขนาดไฟล์ใน C # ได้อย่างไร?
ฉันต้องการวิธีรับขนาดของไฟล์โดยใช้ C # ไม่ใช่ขนาดของดิสก์ เป็นไปได้อย่างไร? ขณะนี้ฉันมีวงนี้ foreach (FileInfo file in downloadedMessageInfo.GetFiles()) { //file.Length (will this work) } สิ่งนี้จะคืนขนาดหรือขนาดของดิสก์หรือไม่?
307 c#  filesize 

8
IEnumerable และ Recursion โดยใช้ผลตอบแทน
ฉันมีIEnumerable<T>วิธีที่ฉันใช้เพื่อค้นหาการควบคุมในหน้า WebForms วิธีการแบบเรียกซ้ำและฉันมีปัญหาบางอย่างกลับประเภทที่ฉันต้องการเมื่อyield returnเป็นคืนค่าของการโทรซ้ำ รหัสของฉันมีลักษณะดังนี้: public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield return c; } if(c.Controls.Count > 0) { yield return c.GetDeepControlsByType<T>(); } } } ขณะนี้มีข้อผิดพลาด "ไม่สามารถแปลงประเภทการแสดงออก" หากอย่างไรก็ตามวิธีการนี้จะคืนค่าชนิดIEnumerable<Object>รหัสจะสร้างขึ้น แต่จะส่งคืนชนิดที่ไม่ถูกต้องในผลลัพธ์ มีวิธีใช้yield returnในขณะที่ใช้การเรียกซ้ำหรือไม่

15
มีทางเลือกในการสตริงแทนที่ว่าเป็นกรณี ๆ ไปหรือไม่
ฉันต้องการค้นหาสตริงและแทนที่การเกิดทั้งหมด%FirstName%และ%PolicyAmount%ด้วยค่าที่ดึงออกมาจากฐานข้อมูล ปัญหาคือการใช้อักษรตัวพิมพ์ใหญ่ของ FirstName แตกต่างกันไป ที่ป้องกันฉันจากการใช้String.Replace()วิธีการ ฉันเคยเห็นหน้าเว็บในหัวข้อที่แนะนำ Regex.Replace(strInput, strToken, strReplaceWith, RegexOptions.IgnoreCase); อย่างไรก็ตามด้วยเหตุผลบางอย่างเมื่อฉันลองและแทนที่%PolicyAmount%ด้วย$0การแทนที่ไม่เคยเกิดขึ้น ฉันคิดว่ามันมีบางอย่างเกี่ยวกับเครื่องหมายดอลลาร์เป็นตัวละครที่สงวนไว้ใน regex มีวิธีอื่นที่ฉันสามารถใช้ที่ไม่เกี่ยวข้องกับ sanitizing อินพุตเพื่อจัดการกับอักขระพิเศษ regex หรือไม่
306 c#  .net  string  .net-2.0  replace 

9
กระบวนการเริ่มต้น: วิธีการรับเอาท์พุท?
ฉันต้องการเรียกใช้โปรแกรมบรรทัดคำสั่งภายนอกจากแอพ Mono / .NET ของฉัน ตัวอย่างเช่นผมต้องการเรียกmencoder เป็นไปได้ไหม: เพื่อรับเอาต์พุตเชลล์บรรทัดคำสั่งและเขียนลงในกล่องข้อความของฉัน? วิธีรับค่าตัวเลขเพื่อแสดงแถบความคืบหน้าเมื่อเวลาผ่านไป?
306 c#  .net  mono  process.start 

2
มี AddRange ที่เทียบเท่ากับ HashSet ใน C # หรือไม่
ด้วยรายการที่คุณสามารถทำได้: list.AddRange(otherCollection); ไม่มีวิธีการที่หลากหลายเพิ่มในเป็นHashSet วิธีที่ดีที่สุดในการเพิ่มคอลเล็กชันอื่นใน HashSet คืออะไร

10
วิธีการสร้างใหม่ InnerException โดยไม่สูญเสียการติดตามสแต็คใน C # ได้อย่างไร
ฉันกำลังเรียกวิธีสะท้อนซึ่งอาจทำให้เกิดข้อยกเว้น ฉันจะส่งข้อยกเว้นไปยังผู้โทรโดยไม่มีการสะท้อนของผู้คลุมรอบได้อย่างไร ฉันกำลัง rethrowing InnerException แต่สิ่งนี้จะทำลายการติดตามสแต็ก รหัสตัวอย่าง: public void test1() { // Throw an exception for testing purposes throw new ArgumentException("test1"); } void test2() { try { MethodInfo mi = typeof(Program).GetMethod("test1"); mi.Invoke(this, null); } catch (TargetInvocationException tiex) { // Throw the new exception throw tiex.InnerException; } }
305 c#  .net  exception 

12
ฉันไม่สามารถโหลดทรัพยากร: net :: ERR_BLOCKED_BY_CLIENT ด้วย Google chrome
ฉันได้รับหน้าขาวหลังจากใช้งานโครงการ แต่ทำงานกับ. ไคลเอ็นต์สุทธิอย่างถูกต้องฉันต้องการการตั้งค่าใด ๆ ในเบราว์เซอร์หรือไม่ และลิงก์จะมาหลังจากข้อผิดพลาด Failed to load resource: net::ERR_BLOCKED_BY_CLIENT http://clkmon.com/adServe/getTag?cid=200093510300000000&pid=CRSRDR&type=inject Failed to load resource: net::ERR_BLOCKED_BY_CLIENT http://ads.626apps.com/a.php?626ref2=200093510300000000&626Name=Plus-HD-4.9&626ref3=B41A77C1675040A28F7E209964620E5EIE&626ref1=63726f73737269646572
305 c#  .net 

9
ส่งคืนไฟล์เพื่อดู / ดาวน์โหลดใน ASP.NET MVC
ฉันประสบปัญหาในการส่งไฟล์ที่เก็บไว้ในฐานข้อมูลกลับไปยังผู้ใช้ใน ASP.NET MVC สิ่งที่ฉันต้องการคือมุมมองที่แสดงรายการลิงก์สองรายการลิงก์หนึ่งเพื่อดูไฟล์และปล่อยให้ mimetype ที่ส่งไปยังเบราว์เซอร์พิจารณาว่าควรจัดการอย่างไรและอีกลิงค์บังคับให้ดาวน์โหลด หากฉันเลือกที่จะดูไฟล์ที่เรียกว่าSomeRandomFile.bakและเบราว์เซอร์ไม่มีโปรแกรมที่เกี่ยวข้องในการเปิดไฟล์ประเภทนี้แสดงว่าฉันไม่มีปัญหากับการเริ่มต้นกับพฤติกรรมการดาวน์โหลด อย่างไรก็ตามถ้าฉันเลือกที่จะดูไฟล์ที่เรียกว่าSomeRandomFile.pdfหรือSomeRandomFile.jpgฉันต้องการให้เปิดไฟล์ แต่ฉันต้องการเก็บลิงค์ดาวน์โหลดไว้ด้านข้างเพื่อให้ฉันสามารถบังคับให้พรอมต์ดาวน์โหลดโดยไม่คำนึงถึงประเภทไฟล์ มันสมเหตุสมผลหรือไม่ ฉันเหนื่อย FileStreamResultแล้วมันใช้งานได้กับไฟล์ส่วนใหญ่คอนสตรัคเตอร์ไม่ยอมรับชื่อไฟล์ตามค่าเริ่มต้นดังนั้นไฟล์ที่ไม่รู้จักจะถูกกำหนดชื่อไฟล์ตาม URL (ซึ่งไม่ทราบว่าจะให้นามสกุลตามประเภทเนื้อหา) หากฉันบังคับชื่อไฟล์ด้วยการระบุฉันจะเสียความสามารถของเบราว์เซอร์ในการเปิดไฟล์โดยตรงและฉันได้รับพรอมต์ดาวน์โหลด มีคนอื่นพบสิ่งนี้หรือไม่? นี่คือตัวอย่างของสิ่งที่ฉันได้ลองมา //Gives me a download prompt. return File(document.Data, document.ContentType, document.Name); //Opens if it is a known extension type, downloads otherwise (download has bogus name and missing extension) return new FileStreamResult(new MemoryStream(document.Data), document.ContentType); //Gives me …

3
คุณต้องวาง Task.Run ลงในเมธอดเพื่อทำให้เป็น async หรือไม่?
ฉันพยายามที่จะเข้าใจ async ที่รอในรูปแบบที่ง่ายที่สุด ฉันต้องการสร้างวิธีง่าย ๆ ที่เพิ่มตัวเลขสองตัวเพื่อประโยชน์ของตัวอย่างนี้ได้รับไม่มีเวลาในการประมวลผลเลยมันเป็นเพียงเรื่องของการสร้างตัวอย่างที่นี่ ตัวอย่างที่ 1 private async Task DoWork1Async() { int result = 1 + 2; } ตัวอย่างที่ 2 private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); } หากฉันรอDoWork1Async()รหัสจะทำงานพร้อมกันหรือไม่ตรงกัน? ฉันจำเป็นต้องรวมโค้ดการซิงค์ไว้ด้วยTask.Runเพื่อให้วิธีนี้ไม่สามารถรอได้และแบบอะซิงโครนัสเพื่อไม่ให้บล็อกเธรด UI หรือไม่ ฉันพยายามที่จะคิดออกว่าวิธีการของฉันเป็นTaskหรือTask<T>ฉันจะต้องห่อรหัสด้วยTask.Runเพื่อให้มันไม่ตรงกัน คำถามโง่ฉันแน่ใจ แต่ผมดูตัวอย่างในสุทธิที่ผู้คนกำลังรอรหัสที่มีอะไร async ภายในและไม่ได้อยู่ในห่อหรือTask.RunStartNew

12
วิธีการเปรียบเทียบเฉพาะวันที่ไม่มีเวลาในประเภท DateTime ใน Linq กับ SQL ด้วย Entity Framework
มีวิธีเปรียบเทียบDateTimeตัวแปรสองตัวLinq2Sqlแต่ไม่สนใจส่วนของเวลาหรือไม่ แอพจัดเก็บรายการต่าง ๆ ในฐานข้อมูลและเพิ่มวันที่เผยแพร่ ฉันต้องการรักษาเวลาที่แน่นอน แต่ก็ยังสามารถดึงตามวันที่ได้ ฉันต้องการเปรียบเทียบ12/3/89 12:43:34และ12/3/89 11:22:12ไม่สนใจเวลาจริงของวันดังนั้นทั้งสองอย่างนี้จึงถือว่าเหมือนกัน ฉันเดาว่าฉันสามารถตั้งค่าเวลาทั้งหมดของวันเป็น00:00:00ก่อนที่ฉันจะเปรียบเทียบ แต่จริง ๆ แล้วฉันต้องการทราบเวลาของวันที่ฉันแค่ต้องการเปรียบเทียบตามวันที่เท่านั้น ฉันพบรหัสบางอย่างที่มีปัญหาเดียวกันและพวกเขาเปรียบเทียบปีเดือนและวันแยกจากกัน มีวิธีที่ดีกว่าในการทำเช่นนี้?

13
วิธีการตรวจสอบว่ามีการติดตั้ง. NET Core
ฉันรู้ว่าสำหรับ. NET รุ่นเก่าคุณสามารถตรวจสอบว่ามีการติดตั้งรุ่นที่กำหนดโดยทำตาม https://support.microsoft.com/en-us/kb/318785 มีวิธีการอย่างเป็นทางการของการกำหนดว่า .NET หลักมีการติดตั้ง? (และฉันไม่ได้หมายถึง SDK ฉันต้องการตรวจสอบเซิร์ฟเวอร์ที่ไม่มี SDK เพื่อตรวจสอบว่ามี DotNetCore.1.0.0-WindowsHosting.exe ติดตั้งอยู่หรือไม่) ฉันเห็น HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET Cross-Platform Runtime Environment\.NET Framework 4.6\Win\v1-rc1 ด้วย Version # 1.0.11123.0 บนเครื่อง windows 7 ของฉัน แต่ฉันไม่เห็นสิ่งเดียวกันในเครื่อง Windows 10 ของฉัน

7
การแก้ไขอินสแตนซ์ด้วย ASP.NET Core DI
ฉันจะแก้ไขชนิดด้วยตนเองโดยใช้เฟรมเวิร์กการฉีดพึ่งพาของ ASP.NET Core MVC ได้อย่างไร การตั้งค่าคอนเทนเนอร์นั้นง่ายพอ: public void ConfigureServices(IServiceCollection services) { // ... services.AddTransient<ISomeService, SomeConcreteService>(); } แต่ฉันจะแก้ไขISomeServiceได้อย่างไรถ้าไม่ฉีดยา? ตัวอย่างเช่นฉันต้องการทำสิ่งนี้: ISomeService service = services.Resolve<ISomeService>(); IServiceCollectionไม่มีวิธีการดังกล่าวในการเป็น

30
ทำให้วิธีส่วนตัวเป็นแบบสาธารณะเพื่อทดสอบหน่วย…เป็นความคิดที่ดี?
ผู้ดำเนินรายการหมายเหตุ: มี 39 คำตอบที่โพสต์แล้วที่นี่ (บางคำถูกลบไปแล้ว) ก่อนที่คุณโพสต์ของคุณคำตอบพิจารณาหรือไม่ว่าคุณสามารถเพิ่มสิ่งที่มีความหมายกับการอภิปราย คุณมีโอกาสมากกว่าที่จะทำซ้ำในสิ่งที่คนอื่นพูดไปแล้ว บางครั้งฉันพบว่าตัวเองต้องการวิธีการแบบส่วนตัวในที่สาธารณะในชั้นเรียนเพื่อเขียนการทดสอบหน่วยบางอย่างสำหรับมัน โดยทั่วไปแล้วจะเป็นเพราะวิธีการนี้มีตรรกะที่ใช้ร่วมกันระหว่างวิธีอื่น ๆ ในชั้นเรียนและเป็นระเบียบเรียบร้อยมากขึ้นในการทดสอบตรรกะด้วยตนเองหรือเหตุผลอื่นอาจเป็นไปได้ถ้าฉันต้องการทดสอบตรรกะที่ใช้ในเธรดแบบซิงโครนัส . คนอื่นคิดว่าตัวเองกำลังทำสิ่งนี้อยู่หรือเปล่าเพราะฉันไม่ชอบทำมันจริงเหรอ? โดยส่วนตัวแล้วฉันคิดว่าโบนัสนั้นมีค่ามากกว่าปัญหาในการทำให้วิธีการเป็นสาธารณะซึ่งไม่ได้ให้บริการใด ๆ นอกห้องเรียน ... UPDATE ขอบคุณสำหรับคำตอบทุกคนดูเหมือนว่าจะทำให้คนสนใจป่องๆ ฉันคิดว่าฉันทามติทั่วไปคือการทดสอบควรเกิดขึ้นผ่าน API สาธารณะเนื่องจากนี่เป็นวิธีเดียวที่จะใช้คลาสนี้และฉันเห็นด้วยกับสิ่งนี้ สองสามกรณีที่ฉันกล่าวถึงข้างต้นที่ฉันจะทำเช่นนี้เป็นกรณีที่ผิดปกติและฉันคิดว่าประโยชน์ของการทำมันคุ้มค่า อย่างไรก็ตามฉันสามารถเห็นทุกคนชี้ว่ามันไม่ควรเกิดขึ้นจริง และเมื่อคิดเกี่ยวกับมันอีกเล็กน้อยฉันคิดว่าการเปลี่ยนรหัสของคุณเพื่อรองรับการทดสอบเป็นความคิดที่ไม่ดี - หลังจากทั้งหมดฉันคิดว่าการทดสอบเป็นเครื่องมือสนับสนุนในทางและการเปลี่ยนระบบเป็น 'สนับสนุนเครื่องมือสนับสนุน' ถ้าคุณพอใจ การปฏิบัติที่ไม่ดี
301 c#  java  unit-testing 

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