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

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

14
ฉันควรส่งคืน IEnumerable <T> แทน IList <T> หรือไม่
เมื่อฉันเขียน DAL หรือรหัสอื่นที่ส่งคืนชุดของรายการฉันควรทำคำสั่งส่งคืนเสมอ: public IEnumerable&lt;FooBar&gt; GetRecentItems() หรือ public IList&lt;FooBar&gt; GetRecentItems() ขณะนี้ในรหัสของฉันฉันพยายามใช้ IEnumerable ให้มากที่สุด แต่ฉันไม่แน่ใจว่านี่เป็นแนวทางปฏิบัติที่ดีที่สุดหรือไม่? ดูเหมือนจะถูกต้องเพราะฉันส่งคืนประเภทข้อมูลที่ใช้กันทั่วไปมากที่สุดในขณะที่ยังคงอธิบายสิ่งที่ทำอยู่ แต่อาจจะไม่ถูกต้องที่จะทำ
98 c#  ienumerable 

9
WCF เน้นคุณสมบัติโดยไม่มี "set" วิธีแก้ปัญหาใด ๆ
ฉันมีคลาสบางคลาสที่ฉันผ่านเนื่องจากเมธอดบริการและคลาสนั้นมีคุณสมบัติรับอย่างเดียว: [DataContract] public class ErrorBase { [DataMember] public virtual string Message { get { return ""; } } } ฉันได้รับข้อยกเว้นในด้านการบริการ: System.Runtime.Serialization.InvalidDataContractException: ไม่ได้ตั้งค่าวิธีการสำหรับคุณสมบัติ 'ข้อความ' ในประเภท 'MyNamespace.ErrorBase' ฉันต้องมีคุณสมบัตินี้เป็นเพียงผู้เริ่มต้นฉันไม่สามารถอนุญาตให้ผู้ใช้กำหนดค่าได้ วิธีแก้ปัญหาใด ๆ ที่ฉันสามารถใช้ได้? หรือฉันไม่มีคุณสมบัติเพิ่มเติมบางอย่าง?

3
เหตุใดเงื่อนไข (null ||! tryParse) จึงทำให้เกิด "การใช้ตัวแปรภายในที่ไม่ได้กำหนด"
โค้ดต่อไปนี้ส่งผลให้ใช้ตัวแปรโลคัล "numberOfGroups" ที่ไม่ได้กำหนด : int numberOfGroups; if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups)) { numberOfGroups = 10; } อย่างไรก็ตามรหัสนี้ใช้งานได้ดี (แม้ว่าReSharperกล่าวว่า= 10ซ้ำซ้อน): int numberOfGroups = 10; if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups)) { numberOfGroups = 10; } ฉันขาดอะไรไปหรือคอมไพเลอร์ไม่ชอบของฉัน||? ฉันได้ จำกัด สิ่งนี้ให้แคบลงจนdynamicทำให้เกิดปัญหา ( optionsเป็นตัวแปรแบบไดนามิกในโค้ดด้านบนของฉัน) คำถามยังคงอยู่ทำไมฉันถึงทำสิ่งนี้ไม่ได้? รหัสนี้ไม่ได้รวบรวม: internal class Program { #region …

6
วิธีรับจำนวนแถวโดยใช้ SqlDataReader ใน C #
คำถามของฉันคือวิธีรับจำนวนแถวที่ส่งคืนโดยแบบสอบถามโดยใช้SqlDataReaderใน C # ฉันเคยเห็นคำตอบบางอย่างเกี่ยวกับเรื่องนี้ แต่ไม่มีการกำหนดอย่างชัดเจนยกเว้นคำตอบที่ระบุให้ทำ while loop ด้วยRead()วิธีการและเพิ่มตัวนับ ปัญหาของฉันคือฉันพยายามเติมอาร์เรย์หลายมิติโดยให้แถวแรกเป็นชื่อส่วนหัวของคอลัมน์และทุกแถวหลังจากนั้นเป็นข้อมูลแถว ฉันรู้ว่าฉันสามารถถ่ายโอนข้อมูลในตัวควบคุมรายการได้และไม่ต้องกังวลกับมัน แต่เพื่อการแก้ไขส่วนตัวของฉันเองและฉันต้องการดึงข้อมูลเข้าและออกจากอาร์เรย์เมื่อฉันเลือกและแสดงในรูปแบบต่างๆ ดังนั้นฉันคิดว่าฉันไม่สามารถทำวิธีRead()เพิ่ม ++ ได้แล้วเพราะนั่นหมายความว่าฉันจะต้องเปิดRead()แล้วเปิดRead()อีกครั้งเพื่อรับจำนวนแถวแล้วจึงเป็นข้อมูลคอลัมน์ เป็นเพียงตัวอย่างเล็ก ๆ ของสิ่งที่ฉันกำลังพูดถึง: int counter = 0; while (sqlRead.Read()) { //get rows counter++ } จากนั้นสำหรับลูปเพื่อวิ่งผ่านคอลัมน์และป๊อป something.Read(); int dbFields = sqlRead.FieldCount; for (int i = 0; i &lt; dbFields; i++) { // do stuff to array }
98 c#  sqldatareader 

15
NET เทียบเท่ากับ Apache Hadoop หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ดังนั้นฉันจึงมองHadoopด้วยความสนใจและพูดตามตรงว่าฉันหลงใหลสิ่งต่าง ๆ ไม่ได้เย็นลงมากนัก ปัญหาเล็กน้อยของฉันคือฉันเป็นนักพัฒนา C # และอยู่ใน Java มันไม่ใช่ว่าผมไม่เข้าใจ Java มากที่สุดเท่าที่ฉันมองหา Hadoop.net หรือ NHadoop หรือโครงการ .NET ที่โอบกอดGoogle MapReduceวิธี มีใครรู้บ้างไหม?
98 c#  .net  hadoop  mapreduce 

9
วิธีซิงโครไนซ์อินเทอร์เฟซและความคิดเห็นในการใช้งานใน C # [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีวิธีอัตโนมัติในการซิงค์ความคิดเห็นระหว่างอินเทอร์เฟซและการใช้งานหรือไม่ ฉันกำลังจัดทำเอกสารทั้งคู่และไม่ต้องการให้ซิงค์ด้วยตนเอง อัพเดท: พิจารณารหัสนี้: interface IFoo{ /// &lt;summary&gt; /// Commenting DoThis method /// &lt;/summary&gt; void DoThis(); } class Foo : IFoo { public void DoThis(); } เมื่อฉันสร้างชั้นเรียนเช่นนี้: IFoo foo=new Foo(); foo.DoThis();//comments are shown in intellisense ความคิดเห็นที่นี่จะไม่แสดง: Foo foo=new Foo(); foo.DoThis();//comments are …

10
รับบิตเฉพาะจากไบต์
ฉันมีไบต์โดยเฉพาะหนึ่งไบต์จากอาร์เรย์ไบต์ที่เข้ามาผ่าน UDP ที่ส่งจากอุปกรณ์อื่น ไบต์นี้เก็บสถานะเปิด / ปิดของรีเลย์ 8 ตัวในอุปกรณ์ ฉันจะรับค่าของบิตเฉพาะในไบต์ดังกล่าวได้อย่างไร ตามหลักการแล้ววิธีการขยายจะดูสวยงามที่สุดและการคืนบูลจะเหมาะสมกับฉันมากที่สุด public static bool GetBit(this byte b, int bitNumber) { //black magic goes here }
98 c# 

8
วิธีบันทึก Console.WriteLine เอาต์พุตเป็นไฟล์ข้อความ
ฉันมีโปรแกรมที่แสดงผลลัพธ์ต่าง ๆ บนคอนโซลบรรทัดคำสั่ง ฉันจะบันทึกผลลัพธ์เป็นไฟล์ข้อความโดยใช้ a StreamReaderหรือเทคนิคอื่น ๆ ได้อย่างไร System.Collections.Generic.IEnumerable&lt;String&gt; lines = File.ReadAllLines(@"C:\Test\ntfs8.txt"); foreach (String r in lines.Skip(1)) { String[] token = r.Split(','); String[] datetime = token[0].Split(' '); String timeText = datetime[4]; String actions = token[2]; Console.WriteLine("The time for this array is: " + timeText); Console.WriteLine(token[7]); Console.WriteLine(actions); MacActions(actions); x = 1; …
98 c# 

4
การสร้างอินสแตนซ์ประเภทโดยไม่มีตัวสร้างเริ่มต้นใน C # โดยใช้การสะท้อน
ยกตัวอย่างชั้นเรียนต่อไปนี้: class Sometype { int someValue; public Sometype(int someValue) { this.someValue = someValue; } } จากนั้นฉันต้องการสร้างอินสแตนซ์ประเภทนี้โดยใช้การสะท้อน: Type t = typeof(Sometype); object o = Activator.CreateInstance(t); โดยปกติสิ่งนี้จะใช้งานได้อย่างไรก็ตามเนื่องจากSomeTypeไม่ได้กำหนดคอนสตรัคเตอร์แบบไม่มีพารามิเตอร์การเรียกใช้Activator.CreateInstanceจะทำให้เกิดข้อยกเว้นของประเภทที่MissingMethodExceptionมีข้อความ " ไม่มีตัวสร้างที่ไม่มีพารามิเตอร์กำหนดไว้สำหรับอ็อบเจ็กต์นี้ " มีวิธีอื่นในการสร้างอินสแตนซ์ของประเภทนี้หรือไม่ มันเป็นเรื่องที่แย่มากที่จะเพิ่มตัวสร้างแบบไม่มีพารามิเตอร์ให้กับทุกชั้นเรียนของฉัน

7
การอ่าน Xml ด้วย XmlReader ใน C #
ฉันพยายามอ่านเอกสาร Xml ต่อไปนี้ให้เร็วที่สุดและปล่อยให้ชั้นเรียนเพิ่มเติมจัดการการอ่านของแต่ละบล็อกย่อย &lt;ApplicationPool&gt; &lt;Accounts&gt; &lt;Account&gt; &lt;NameOfKin&gt;&lt;/NameOfKin&gt; &lt;StatementsAvailable&gt; &lt;Statement&gt;&lt;/Statement&gt; &lt;/StatementsAvailable&gt; &lt;/Account&gt; &lt;/Accounts&gt; &lt;/ApplicationPool&gt; อย่างไรก็ตามฉันกำลังพยายามใช้ออบเจ็กต์ XmlReader เพื่ออ่านแต่ละบัญชีและต่อมา "StatementsAvailable" คุณแนะนำให้ใช้ XmlReader อ่านและตรวจสอบแต่ละองค์ประกอบและจัดการหรือไม่ ฉันคิดจะแยกชั้นเรียนเพื่อจัดการกับแต่ละโหนดอย่างเหมาะสม ดังนั้นจึงเป็นคลาส AccountBase ที่ยอมรับอินสแตนซ์ XmlReader ที่อ่าน NameOfKin และคุณสมบัติอื่น ๆ เกี่ยวกับบัญชี จากนั้นฉันก็ต้องการที่จะโต้ตอบผ่านคำสั่งและให้ชั้นเรียนอื่นกรอกข้อมูลเกี่ยวกับคำชี้แจง (และต่อมาเพิ่มไปยัง IList) จนถึงตอนนี้ฉันมีส่วน "ต่อคลาส" ที่ทำโดยการทำ XmlReader.ReadElementString () แต่ฉันไม่สามารถออกกำลังกายได้ว่าจะบอกให้ตัวชี้ย้ายไปยังองค์ประกอบ StatementsAvailable ได้อย่างไรและให้ฉันทำซ้ำผ่านพวกเขาและให้ชั้นเรียนอื่นอ่านแต่ละส่วนขององค์ประกอบเหล่านั้น . ฟังดูง่าย!
98 c#  xml  xmlreader 

9
ฉันจะหาฟังก์ชัน "แคลมป์" ใน. NET ได้ที่ไหน?
ฉันต้องการกำหนดค่าxเป็นช่วง[a, b]: x = (x &lt; a) ? a : ((x &gt; b) ? b : x); นี่เป็นเรื่องพื้นฐานทีเดียว แต่ผมไม่เห็นฟังก์ชั่น "ยึด" ในห้องสมุดชั้น - System.Mathอย่างน้อยไม่ได้อยู่ใน (สำหรับผู้ที่ไม่รู้จะ "ยึด" ค่าคือเพื่อให้แน่ใจว่าอยู่ระหว่างค่าสูงสุดและค่าต่ำสุดบางค่าหากมากกว่าค่าสูงสุดค่าสูงสุดจะถูกแทนที่ด้วยค่าสูงสุดเป็นต้น)
98 c#  clamp 

6
พารามิเตอร์ดีฟอลต์สำหรับ Can CancelToken
ฉันมีรหัส async บางอย่างที่ผมอยากจะเพิ่มCancellationTokenไป แต่มีการใช้งานจำนวนมากที่นี้ไม่จำเป็นต้องดังนั้นผมจึงอยากมีพารามิเตอร์เริ่มต้น - CancellationToken.Noneบางที อย่างไรก็ตาม Task&lt;x&gt; DoStuff(...., CancellationToken ct = null) ผลตอบแทน ไม่สามารถใช้ค่าประเภท '' เป็นพารามิเตอร์เริ่มต้นได้เนื่องจากไม่มีการแปลงมาตรฐานให้พิมพ์ 'System.Threading.CancellationToken' และ Task&lt;x&gt; DoStuff(...., CancellationToken ct = CancellationToken.None) ค่าพารามิเตอร์เริ่มต้นสำหรับ 'ct' ต้องเป็นค่าคงที่เวลาคอมไพล์ มีวิธีใดบ้างที่จะมีค่าเริ่มต้นสำหรับCancellationToken?

10
ตั้งค่า appsettings.json โดยอัตโนมัติสำหรับสภาพแวดล้อมการพัฒนาและรีลีสในแกน asp.net หรือไม่
ฉันได้กำหนดค่าบางอย่างใน my appsettings.jsonสำหรับสิ่งต่างๆเช่นสตริงการเชื่อมต่อฐานข้อมูลตำแหน่ง webapi และสิ่งที่คล้ายกันซึ่งแตกต่างกันสำหรับการพัฒนาการจัดเตรียมและสภาพแวดล้อมแบบสด มีวิธีการมีหลายappsettings.jsonไฟล์ (เช่นappsettings.live.jsonฯลฯ ฯลฯ ) และมีแอป asp.net เพียงแค่ 'รู้' ว่าจะใช้ไฟล์ใดตามการกำหนดค่าบิลด์ที่กำลังทำงานอยู่

16
ไม่พบ testhost.dll โปรดเผยแพร่โครงการทดสอบของคุณแล้วลองอีกครั้ง
ฉันมีไลบรารีคลาส dotnet core อย่างง่ายพร้อมวิธีทดสอบ XUnit เดียว: TestLib.csproj: &lt;Project Sdk="Microsoft.NET.Sdk"&gt; &lt;PropertyGroup&gt; &lt;TargetFramework&gt;netstandard2.0&lt;/TargetFramework&gt; &lt;/PropertyGroup&gt; &lt;ItemGroup&gt; &lt;PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" /&gt; &lt;PackageReference Include="xunit" Version="2.4.1" /&gt; &lt;PackageReference Include="xunit.runner.console" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runners" Version="2.0.0" /&gt; &lt;/ItemGroup&gt; &lt;/Project&gt; BasicTest.cs: using Xunit; …

3
Linq Syntax - การเลือกหลายคอลัมน์
นี่คือ Linq Syntax ของฉันที่ฉันใช้กับโมเดลเอนทิตีของฉัน IQueryable&lt;string&gt; objEmployee = null; objEmployee = from res in _db.EMPLOYEEs where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo) select res.EMAIL; ฉันจะเลือกหลายคอลัมน์ได้อย่างไร เช่นฉันต้องการเลือก res.ID เช่นกัน และฉันจะรับสิ่งเหล่านั้นได้อย่างไร? ฉันคิดว่า IQueryable จะไม่ได้ผล และนี่เรียกว่า Linq เป็น SQL - ใช่ไหม?

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