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

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

3
เรียกวิธีการคงที่ด้วยการสะท้อน
ฉันมีคลาสคงที่หลายตัวในเนมสเปซmySolution.Macrosเช่น static class Indent{ public static void Run(){ // implementation } // other helper methods } ดังนั้นคำถามของฉันคือจะเรียกวิธีการเหล่านั้นด้วยการไตร่ตรองได้อย่างไร? หากวิธีการที่ไม่คงที่ฉันสามารถทำสิ่งต่อไปนี้: var macroClasses = Assembly.GetExecutingAssembly().GetTypes().Where( x => x.Namespace.ToUpper().Contains("MACRO") ); foreach (var tempClass in macroClasses) { var curInsance = Activator.CreateInstance(tempClass); // I know have an instance of a macro and will be able to …
112 c#  reflection  dynamic 

16
การกำหนดเวอร์ชันอัตโนมัติใน Visual Studio 2017 (.NET Core)
ฉันใช้เวลาสองสามชั่วโมงในการหาวิธีเพิ่มเวอร์ชันที่เพิ่มขึ้นอัตโนมัติใน. NETCoreApp 1.1 (Visual Studio 2017) ฉันรู้ว่ากำลังสร้าง AssemblyInfo.cs แบบไดนามิกในโฟลเดอร์: obj/Debug/netcoreapp1.1/ ไม่ยอมรับวิธีการเดิมของ: [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")] ถ้าฉันตั้งค่าโปรเจ็กต์เป็นแพ็กเกจฉันสามารถตั้งค่าเวอร์ชันได้ แต่ดูเหมือนว่าจะใช้ในการสร้างไฟล์ AssemblyInfo.cs คำถามของฉันคือมีใครคิดบ้างว่าจะควบคุมเวอร์ชันในโครงการ. NET Core (หรือ. NETStandard สำหรับเรื่องนั้น) ได้อย่างไร

9
อัปโหลดไฟล์ไปยัง FTP โดยใช้ C #
ฉันลองอัปโหลดไฟล์ไปยัง FTP-server ด้วย C # ไฟล์ถูกอัปโหลด แต่มีศูนย์ไบต์ private void button2_Click(object sender, EventArgs e) { var dirPath = @"C:/Documents and Settings/sander.GD/Bureaublad/test/"; ftp ftpClient = new ftp("ftp://example.com/", "username", "password"); string[] files = Directory.GetFiles(dirPath,"*.*"); var uploadPath = "/httpdocs/album"; foreach (string file in files) { ftpClient.createDirectory("/test"); ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file); } if …
112 c#  .net  file-upload  ftp 

4
วิธีการตรวจสอบขนาดคอลเลกชันใน xUnit เป็นอย่างไร
ฉันมีชุดทดสอบในชุดทดสอบที่มีลักษณะดังนี้: [Fact] public void VerifySomeStuff() { var stuffCollection = GetSomeStuff(); Assert.Equal(1, stuffCollection.Count()); } การทดสอบนี้ได้ผลตามที่ฉันคาดหวัง แต่เมื่อฉันเรียกใช้ xUnit จะพิมพ์คำเตือน: คำเตือน xUnit2013: อย่าใช้ Assert.Equal () เพื่อตรวจสอบขนาดคอลเลกชัน อย่างไรก็ตามไม่มีทางเลือกอื่นที่แนะนำในคำเตือนและการค้นหาโดย Google จะพาฉันไปที่ซอร์สโค้ดใน xUnit สำหรับการทดสอบที่ยืนยันว่ามีการพิมพ์คำเตือนนี้ หากAssert.Equal()ไม่ใช่วิธีที่ถูกต้องในการตรวจสอบความยาวของคอลเลคชันคืออะไร? เพื่อชี้แจง: ฉันตระหนักดีว่าฉันสามารถ "หลอก" xUnit ไม่ให้ส่งเสียงเตือนนี้ได้โดยการแยกตัวแปรหรือใช้Assert.True(stuff.Count() == 1)แทน หลังเป็นเพียงแฮ็คและก่อนหน้านี้รู้สึกเหมือนว่า xUnit พยายามหลีกเลี่ยงการทำซ้ำหลาย ๆ ครั้งIEnumerable<T>นี่เป็นวิธีที่ผิดที่จะไป (เพราะฉันจะได้รับคำแนะนำเกี่ยวกับคอมไพเลอร์แยกต่างหากหากเป็นปัญหา) และ xUnit ตัวเองไม่ควรต้องประเมินอินพุตมากกว่าหนึ่งครั้ง (อันที่จริงมันอาจจะได้รับอินพุตเดียวกันโดยไม่คำนึงถึงการแยกตัวแปรเนื่องจากวิธีการเรียกใช้ฟังก์ชัน C #) ดังนั้นฉันไม่เพียง แต่สนใจที่จะลบคำเตือนนั้นออกจากผลลัพธ์ของฉัน …
112 c#  xunit  xunit.net 


14
วิธีการเริ่มต้นรายการ <T> เป็นขนาดที่กำหนด (เมื่อเทียบกับความจุ)
.NET นำเสนอคอนเทนเนอร์รายการทั่วไปที่มีประสิทธิภาพเกือบเหมือนกัน (ดูคำถามประสิทธิภาพของอาร์เรย์เทียบกับรายการ) อย่างไรก็ตามมันค่อนข้างแตกต่างกันในการเริ่มต้น อาร์เรย์เป็นเรื่องง่ายมากที่จะเริ่มต้นด้วยค่าเริ่มต้นและตามความหมายพวกเขามีขนาดที่แน่นอนแล้ว: string[] Ar = new string[10]; ซึ่งช่วยให้สามารถกำหนดรายการแบบสุ่มได้อย่างปลอดภัยพูดว่า: Ar[5]="hello"; ด้วยรายการสิ่งที่ยุ่งยากกว่า ฉันสามารถเห็นสองวิธีในการเริ่มต้นเดียวกันซึ่งทั้งสองวิธีนี้ไม่ใช่สิ่งที่คุณเรียกว่าสง่างาม: List&lt;string&gt; L = new List&lt;string&gt;(10); for (int i=0;i&lt;10;i++) L.Add(null); หรือ string[] Ar = new string[10]; List&lt;string&gt; L = new List&lt;string&gt;(Ar); อะไรจะเป็นวิธีที่สะอาดกว่านี้? แก้ไข: คำตอบจนถึงตอนนี้อ้างถึงความจุซึ่งเป็นอย่างอื่นที่ไม่ใช่การเติมรายการล่วงหน้า ตัวอย่างเช่นในรายการที่เพิ่งสร้างขึ้นโดยมีความจุ 10 รายการไม่สามารถทำได้L[2]="somevalue" แก้ไข 2: ผู้คนสงสัยว่าทำไมฉันถึงต้องการใช้รายการด้วยวิธีนี้เนื่องจากไม่ใช่วิธีที่พวกเขาตั้งใจจะใช้ ฉันเห็นเหตุผลสองประการ: คนหนึ่งสามารถโต้แย้งได้อย่างน่าเชื่อว่ารายการเป็นอาร์เรย์ "รุ่นต่อไป" โดยเพิ่มความยืดหยุ่นโดยแทบไม่มีการลงโทษ ดังนั้นควรใช้เป็นค่าเริ่มต้น ฉันกำลังชี้ให้เห็นว่าอาจไม่ง่ายในการเริ่มต้น สิ่งที่ฉันกำลังเขียนอยู่คือคลาสพื้นฐานที่มีฟังก์ชันการทำงานเริ่มต้นซึ่งเป็นส่วนหนึ่งของเฟรมเวิร์กที่ใหญ่กว่า …

13
วิธีการรับเส้นทางการทำงานที่สมบูรณ์?
ฉันมีแอพพลิเคชั่นที่เปลี่ยนการตั้งค่าบางอย่างของแอพพลิเคชั่นอื่น ๆ (เป็นแอพพลิเคชั่น C # ธรรมดาที่รันโดยดับเบิลคลิก (ไม่จำเป็นต้องตั้งค่า)) หลังจากเปลี่ยนการตั้งค่าแล้วฉันต้องรีสตาร์ทแอปพลิเคชันอื่นเพื่อให้แสดงการตั้งค่าที่เปลี่ยนแปลงไป ดังนั้นฉันต้องฆ่ากระบวนการที่กำลังทำงานอยู่และเริ่มกระบวนการอีกครั้ง แต่ปัญหาคือหลังจากฆ่าฉันไม่พบกระบวนการ (เหตุผลคือระบบไม่ทราบว่าไฟล์ exe อยู่ที่ไหน .. ) มีวิธีใดในการค้นหาเส้นทางของกระบวนการทำงานหรือ exe หากกำลังทำงานอยู่ ฉันไม่ต้องการให้เส้นทางด้วยตนเองคือถ้ามันกำลังทำงานรับเส้นทางให้ฆ่าการประมวลผลและเริ่มต้นใหม่อีกครั้ง .... ฉันจะจัดการในภายหลัง
112 c# 

9
วิธีอ่านสตริงการเชื่อมต่อใน. NET Core?
ฉันต้องการอ่านเพียงสตริงการเชื่อมต่อจากไฟล์การกำหนดค่าและสำหรับสิ่งนี้ให้เพิ่มไฟล์ที่มีชื่อ "appsettings.json" ในโปรเจ็กต์ของฉันและเพิ่มเนื้อหานี้: { "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet- WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } } บน ASP.NET ฉันใช้สิ่งนี้: var temp=ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; ตอนนี้ฉันจะอ่าน "DefaultConnection" ใน C # และเก็บไว้ในตัวแปรสตริงใน. NET Core ได้อย่างไร

21
Mocking HttpClient ในการทดสอบหน่วย
ฉันมีปัญหาบางอย่างในการพยายามตัดรหัสเพื่อใช้ในการทดสอบหน่วย ประเด็นคือเรื่องนี้ ฉันมีอินเทอร์เฟซ IHttpHandler: public interface IHttpHandler { HttpClient client { get; } } และคลาสที่ใช้ HttpHandler: public class HttpHandler : IHttpHandler { public HttpClient client { get { return new HttpClient(); } } } จากนั้นคลาส Connection ซึ่งใช้ simpleIOC เพื่อฉีดการใช้งานไคลเอ็นต์: public class Connection { private IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { …
112 c#  unit-testing  moq 

7
โครงการของคุณไม่ได้อ้างอิงกรอบงาน“ .NETFramework, Version = v4.6.2” เพิ่มการอ้างอิงถึง“ .NETFramework, Version = v4.6.2” ใน“ TargetFrameworks”
ฉันไม่สามารถทำการทดสอบหน่วยของฉันได้ ฉันมีข้อผิดพลาดถัดไป: โครงการของคุณไม่ได้อ้างอิงเฟรมเวิร์ก ".NETFramework, Version = v4.6.2" เพิ่มการอ้างอิงถึง ".NETFramework, Version = v4.6.2" ในคุณสมบัติ "TargetFrameworks" ของไฟล์โครงการของคุณจากนั้นเรียกใช้ NuGet restore อีกครั้ง ในapp.config: &lt;startup&gt; &lt;supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/&gt; &lt;/startup&gt; ในโครงการ&gt; คุณสมบัติ&gt; แอปพลิเคชัน&gt; TargetFramework (.NET Framework 4.6.2) จะแก้ไขได้อย่างไร?

20
การเปรียบเทียบคุณสมบัติของวัตถุใน c # [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ปิดให้บริการใน2 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ นี่คือสิ่งที่ฉันคิดขึ้นเป็นวิธีการในคลาสที่สืบทอดมาจากคลาสอื่น ๆ ของฉัน แนวคิดก็คือช่วยให้สามารถเปรียบเทียบคุณสมบัติของ Objects ประเภทเดียวกันได้อย่างง่ายดาย ตอนนี้มันใช้งานได้ - แต่เพื่อประโยชน์ในการปรับปรุงคุณภาพของรหัสของฉันฉันคิดว่าฉันจะโยนมันออกไปเพื่อตรวจสอบข้อเท็จจริง จะดีขึ้น / มีประสิทธิภาพมากขึ้น / ฯลฯ ได้อย่างไร? /// &lt;summary&gt; /// Compare property values (as strings) /// &lt;/summary&gt; /// &lt;param name="obj"&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public bool PropertiesEqual(object comparisonObject) { Type sourceType = this.GetType(); Type …


10
String.Contains () เร็วกว่า String.IndexOf () หรือไม่
ฉันมีสตริงบัฟเฟอร์ประมาณ 2,000 อักขระและต้องการตรวจสอบบัฟเฟอร์ว่ามีสตริงเฉพาะหรือไม่ จะทำการตรวจสอบในเว็บแอป ASP.NET 2.0 สำหรับทุกการร้องขอ มีใครรู้บ้างว่าเมธอด String.Containsทำงานได้ดีกว่าเมธอด String.IndexOfหรือไม่? // 2000 characters in s1, search token in s2 string s1 = "Many characters. The quick brown fox jumps over the lazy dog"; string s2 = "fox"; bool b; b = s1.Contains(s2); int i; i = s1.IndexOf(s2); สนุกจริงๆ
111 c#  .net  asp.net  performance  string 

7
โดยทางโปรแกรมกำหนดระยะเวลาของเวิร์กสเตชันที่ถูกล็อกหรือไม่?
เราจะทราบได้อย่างไรว่าเครื่องถูกล็อคในรหัสนานแค่ไหน? นอกจากนี้ยังยินดีรับแนวคิดอื่น ๆ นอกเหนือจาก C # ฉันชอบแนวคิดการบริการของ windows (และยอมรับแล้ว) สำหรับความเรียบง่ายและความสะอาด แต่น่าเสียดายที่ฉันไม่คิดว่ามันจะได้ผลสำหรับฉันในกรณีนี้ ฉันต้องการเรียกใช้สิ่งนี้บนเวิร์กสเตชันของฉันในที่ทำงานมากกว่าที่บ้าน (หรือนอกเหนือจากที่บ้านฉันคิดว่า) แต่มันถูกล็อคไว้ค่อนข้างยากที่จะได้รับความอนุเคราะห์จาก DoD นั่นเป็นส่วนหนึ่งของเหตุผลที่ฉันหมุนตัวเองจริงๆ ฉันจะเขียนมันต่อไปและดูว่ามันใช้ได้ไหม ขอบคุณทุกคน!
111 c#  windows 

6
เหตุใด. NET / C # จึงไม่ปรับให้เหมาะสมสำหรับการเรียกซ้ำหางโทร
ฉันพบคำถามนี้เกี่ยวกับภาษาที่เพิ่มประสิทธิภาพการเรียกซ้ำหาง เหตุใด C # จึงไม่เพิ่มประสิทธิภาพการเรียกซ้ำหางเมื่อใดก็ตามที่ทำได้ สำหรับกรณีที่เป็นรูปธรรมเหตุใดจึงไม่ปรับวิธีนี้ให้เหมาะสมกับการวนซ้ำ ( Visual Studio 2008 32 บิตถ้าเป็นเช่นนั้น): private static void Foo(int i) { if (i == 1000000) return; if (i % 100 == 0) Console.WriteLine(i); Foo(i+1); }

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