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

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

2
คำพูดเดียวในรูปแบบเวลาวันที่ C # หมายถึงอะไร
เรามีเช่นค่าคงที่นี้ใน C #: System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern มันมีค่านี้ "yyyy'-'MM'-'dd'T'HH':'mm':'ss" ฉันจะใช้มันใน ParseExactฟังก์ชั่นแล้วyyyy-MM-ddTHH:mm:ssทำงานเช่นกัน ฉันไม่สามารถทราบได้ว่าราคาคำเดียวสำหรับอะไร

2
ทำไม“ ใช้ระบบ” ไม่ถือว่าเป็นการปฏิบัติที่ไม่ดี?
ฉันมีพื้นหลัง C ++ และฉันเข้าใจและเห็นด้วยอย่างยิ่งกับคำตอบของคำถามนี้: เหตุใด“ ใช้ namespace std;” ถือว่าเป็นการปฏิบัติที่ไม่ดี? ดังนั้นฉันประหลาดใจที่มีประสบการณ์กับ C # ตอนนี้ฉันเห็นตรงข้ามแน่นอน: using Some.Namespace;มีการใช้อักษรทุกที่ เมื่อใดก็ตามที่คุณเริ่มใช้ประเภทคุณเพิ่มคำสั่งที่ใช้สำหรับเนมสเปซก่อน (ถ้ายังไม่มีอยู่) ฉันไม่สามารถจำได้เห็น.csแฟ้ม: using System; using System.Collections.Generic; using X.Y.Z; etc...ที่ไม่ได้เริ่มต้นด้วย ในความเป็นจริงถ้าคุณเพิ่มไฟล์ใหม่ผ่านวิซาร์ด Visual Studio มันจะเพิ่มไฟล์บางไฟล์โดยใช้คำสั่งที่นั่นแม้ว่าคุณอาจไม่ต้องการมันก็ตาม ดังนั้นในขณะที่ในชุมชน C ++ คุณจะได้รับการลงโทษโดยทั่วไป C # ก็สนับสนุนให้ทำเช่นนี้ อย่างน้อยนี่คือสิ่งที่ฉันเห็น ตอนนี้ฉันเข้าใจแล้วว่าการใช้คำสั่งใน C # และ C ++ ไม่ใช่สิ่งเดียวกัน นอกจากนี้ฉันจะเข้าใจว่าหนึ่งในสิ่ง nastiest ที่คุณสามารถทำอะไรกับusing namespaceใน C ++ …

1
รหัสที่ไม่ปลอดภัยนี้ควรทำงานใน. NET Core 3 ด้วยหรือไม่
ฉันปรับโครงสร้างห้องสมุดของฉันเพื่อใช้Span<T>ในการหลีกเลี่ยงการจัดสรรฮีปหากเป็นไปได้ แต่ตามที่ฉันกำหนดเป้าหมายด้วยเฟรมเวิร์กที่เก่ากว่าฉันกำลังใช้โซลูชันทางเลือกทั่วไปด้วย แต่ตอนนี้ฉันพบปัญหาแปลก ๆ และฉันค่อนข้างแน่ใจว่าฉันพบข้อผิดพลาดใน. NET Core 3 หรือฉันกำลังทำสิ่งผิดกฎหมาย ปัญหา: // This returns 1 as expected but cannot be used in older frameworks: private static uint ReinterpretNew() { Span<byte> bytes = stackalloc byte[4]; bytes[0] = 1; // FillBytes(bytes); // returning bytes as uint: return Unsafe.As<byte, uint>(ref bytes.GetPinnableReference()); } // This …
42 c#  stackalloc 

2
ทำการลาก (อ้างอิงจากพิกัดเมาส์ X และ Y) บน Android โดยใช้ AccessibilityService อย่างไร
ฉันต้องการรู้วิธีลาก Android บนพิกัด X, Y ของเมาส์หรือไม่ พิจารณาว่าเป็นสองตัวอย่างง่ายๆ Team Viewer / QuickSupport วาด "รูปแบบรหัสผ่าน" บนสมาร์ทโฟนระยะไกลและ Pen of Windows Paint ตามลำดับ สิ่งที่ฉันสามารถทำได้คือการจำลองการสัมผัส (ด้วยdispatchGesture()และยังAccessibilityNodeInfo.ACTION_CLICK) ฉันพบลิงค์ที่เกี่ยวข้องเหล่านี้ แต่ไม่ทราบว่าจะมีประโยชน์หรือไม่: ดำเนินการปัดบนหน้าจอโดยใช้ AccessibilityService ตัวอย่างที่ 1 ท่าทางต่อเนื่อง ด้านล่างเป็นรหัสการทำงานของฉันที่ใช้ในการส่งพิกัดเมาส์ (ภายในPictureBoxการควบคุม) ไปยังโทรศัพท์ระยะไกลและจำลองการสัมผัส แอปพลิเคชันฟอร์ม Windows: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { foreach (ListViewItem item in lvConnections.SelectedItems) { // Remote screen resolution …

3
“ คือ {}” หมายความว่าอะไร
ฉันเห็นโค้ดต่อไปนี้ในบางครั้งและไม่ทราบว่านิพจน์กำลังทดสอบอะไรอยู่ public static void Something(string[] value) { if (value is { }) { DoSomethingElse(); } }
36 c#  c#-8.0 

1
หน่วยความจำแบบใดที่ถูกนำไปใช้ใน. NET Core
ข้อมูลจำเพาะ ECMA CLI กำหนดรูปแบบหน่วยความจำที่อ่อนแอ สิ่งนี้อนุญาตให้เรียงลำดับคำสั่งการดำเนินการคำสั่งใหม่ (ซึ่งมีประโยชน์สำหรับประสิทธิภาพ) แต่การเขียนโค้ดระดับต่ำสำหรับโมเดลนั้นยากมาก และที่สำคัญที่สุด - สถาปัตยกรรมโปรเซสเซอร์ X86 / AMD64 มีรูปแบบหน่วยความจำที่เข้มงวดมากขึ้น ด้วยเหตุนี้ Microsoft จึงใช้โมเดลหน่วยความจำที่แข็งแกร่งกว่าในการนำ CLR ไปใช้งานมากกว่าที่อธิบายไว้ในข้อมูลจำเพาะ โมเดลหน่วยความจำมีการเปลี่ยนแปลงใน. NET Core หรือไม่ อาจเป็นไปได้ว่ากรอบงานนี้สามารถทำงานกับสถาปัตยกรรมที่มีหน่วยความจำที่อ่อนกว่ารุ่น X86 / AMD64 นอกจากนี้. NET Core ยังรวม Mono และอื่น ๆ และเท่าที่ฉันรู้รูปแบบหน่วยความจำ Mono นั้นอ่อนกว่านั้นสอดคล้องกับ ECMA ในบทความนี้แนะนำ. NET 5เขียน: ขยายขีดความสามารถของ. NET โดยการใช้. NET Core ที่ดีที่สุด,. NET Framework, Xamarin …
36 c#  .net-core 

1
ValueTuple covariant คืออะไร
สิ่งนี้รวบรวมได้อย่างถูกต้องใน C # 7.3 (Framework 4.8): (string, string) s = ("a", "b"); (object, string) o = s; ฉันรู้ว่านี่คือน้ำตาลประโยคสำหรับต่อไปนี้ซึ่งยังรวบรวมอย่างถูกต้อง: ValueTuple<string, string> s = new ValueTuple<string, string>("a", "b"); ValueTuple<object, string> o = s; ดังนั้นจึงปรากฏว่า ValueTuples สามารถกำหนดcovariantly , ซึ่งเป็นที่น่ากลัว ! น่าเสียดายที่ฉันไม่เข้าใจว่าทำไม : ฉันรู้สึกว่า C # รองรับความแปรปรวนร่วมบนอินเทอร์เฟซและผู้ได้รับมอบหมายเท่านั้น ValueTypeไม่ใช่ อันที่จริงแล้วเมื่อฉันพยายามทำซ้ำฟีเจอร์นี้ด้วยรหัสของฉันเองฉันล้มเหลว: struct MyValueTuple<A, B> { public …

3
HTTP Error 500.35 - ANCM หลายแอพพลิเคชั่นระหว่างดำเนินการใน Process ASP.NET Core 3 เดียวกัน
เมื่อเช้านี้โดยไม่มีการเปลี่ยนแปลงใด ๆ กับรหัสของโครงการเว็บ API ที่ง่ายมากหนึ่งคอนโทรลเลอร์และ 3 วิธีด้วย Swagger มันไม่เริ่มทำงานอีกต่อไปและฉันได้รับข้อผิดพลาด: HTTP Error 500.35 - ANCM หลายแอปพลิเคชั่นระหว่างดำเนินการในกระบวนการเดียวกัน ผู้ดูเหตุการณ์รายงานข้อความที่ไร้ประโยชน์มากที่สุด: IIS Express AspNetCore โมดูล V2: ไม่สามารถเริ่มแอปพลิเคชัน '/ LM / W3SVC / 2 / ROOT / docs', ErrorCode '0x80004005' รีสตาร์ทระบบหลายครั้ง ฉันใช้ Visual Studio 2019 แอปพลิเคชันรวบรวมได้สำเร็จและไม่กี่นาทีที่ผ่านมาก็ทำงานได้ดี ไม่มีการติดตั้งซอฟต์แวร์ใหม่ไม่มีการเพิ่มแพ็คเกจ พยายามทำความสะอาดและสร้างใหม่ ฉันเพิ่งแก้ไขความคิดเห็นของวิธีการ แน่นอนฉันพยายามกู้คืนความคิดเห็นก่อนหน้า แต่ฉันได้รับข้อความเดิมเสมอ ฉันจะทำอย่างไร แกนเน็ตยังคงไม่เสถียรที่จะใช้อย่างมืออาชีพหรือไม่? UPDATE รหัสเดียวกันเปิดตัวจาก Visual …
34 c#  asp.net-core 

3
ไม่มีวิธีการขยาย UseDatabaseErrorPage () ใน Net Core 3.0
ฉันได้สร้างแอป Net Core 3.0 และรหัสต่อไปนี้ที่ทำงานใน 2.2 ตอนนี้ไม่ใช่ app.UseDatabaseErrorPage(); ดูเหมือนว่าในคลาส 3.0 DatabaseErrorPageExtensionsไม่มีอยู่ในMicrosoft.AspNetCore.Builderเนมสเปซ ฉันขาดการพึ่งพาบ้างไหม? ฉันมี EntityFrameworkCore NuGet พร้อมเพิ่มเครื่องมือและการออกแบบ เพิ่ม using Microsoft.AspNetCore.Builder; ไม่ได้ช่วย

6
มีวิธีในการประกาศแลมบ์ดา C # และเรียกมันทันทีหรือไม่?
เป็นไปได้ที่จะประกาศฟังก์ชั่นแลมบ์ดาและเรียกมันว่า: Func<int, int> lambda = (input) => { return 1; }; int output = lambda(0); ฉันสงสัยว่ามันเป็นไปได้ที่จะทำเช่นนั้นในหนึ่งบรรทัดเช่นบางสิ่งบางอย่าง int output = (input) => { return 1; }(0); ซึ่งให้ข้อผิดพลาดคอมไพเลอร์ "คาดว่าชื่อวิธี" กำลังส่งไปที่Func<int, int>ไม่ทำงาน: int output = (Func<int, int>)((input) => { return 1; })(0); ให้ข้อผิดพลาดเดียวกันและด้วยเหตุผลที่กล่าวถึงด้านล่างฉันต้องการหลีกเลี่ยงการระบุประเภทอาร์กิวเมนต์อินพุต (อย่างแรกint) อย่างชัดเจน คุณอาจสงสัยว่าทำไมint output = 1;ฉันต้องการที่จะทำเช่นนี้แทนเพียงฝังโค้ดโดยตรงตัวอย่างเช่น เหตุผลมีดังต่อไปนี้: ฉันได้สร้างการอ้างอิงสำหรับเว็บเซอร์วิส SOAP ด้วยsvcutilเนื่องจากองค์ประกอบซ้อนกันสร้างชื่อคลาสที่ยาวมากซึ่งฉันต้องการหลีกเลี่ยงการพิมพ์ออกมา …
29 c#  lambda 

3
วิธีการตั้งค่า json serializer ใน asp.net core 3
การตั้งค่า JSON serializer สำหรับการใช้งานหลักมรดก asp.net ถูกกำหนดโดยการเพิ่มAddMvc().AddJsonOptions()แต่ฉันไม่ได้ใช้ในAddMvc() asp.net core 3ดังนั้นฉันจะตั้งค่าการปรับให้เป็น json สากลได้อย่างไร

3
ทำไมการคอมไพล์ตกลงเมื่อฉันใช้เมธอด Invoke และไม่ตกลงเมื่อฉันกลับ Func <int, int> โดยตรง?
ฉันไม่เข้าใจกรณีนี้: public delegate int test(int i); public test Success() { Func&lt;int, int&gt; f = x =&gt; x; return f.Invoke; // &lt;- code successfully compiled } public test Fail() { Func&lt;int, int&gt; f = x =&gt; x; return f; // &lt;- code doesn't compile } ทำไมการคอมไพล์ตกลงเมื่อฉันใช้Invokeวิธีการและไม่ตกลงเมื่อฉันกลับcsharp Func&lt;int,int&gt;โดยตรง?
28 c#  lambda  delegates 

2
สร้าง IAsyncE เปล่าที่ว่างเปล่า
ฉันมีอินเตอร์เฟซที่เขียนแบบนี้: public interface IItemRetriever { public IAsyncEnumerable&lt;string&gt; GetItemsAsync(); } ฉันต้องการเขียนการใช้งานเปล่า ๆ ที่ไม่มีรายการคืนมาเช่น: public class EmptyItemRetriever : IItemRetriever { public IAsyncEnumerable&lt;string&gt; GetItemsAsync() { // What do I put here if nothing is to be done? } } หากเป็น IEnumerable ธรรมดาฉันจะreturn Enumerable.Empty&lt;string&gt;();แต่ฉันไม่พบอะไรAsyncEnumerable.Empty&lt;string&gt;()เลย วิธีการแก้ปัญหา ฉันพบสิ่งนี้ซึ่งใช้งานได้ แต่ค่อนข้างแปลก: public async IAsyncEnumerable&lt;string&gt; GetItemsAsync() { await Task.CompletedTask; …

4
คุณลักษณะ 'การใช้การประกาศ' ไม่พร้อมใช้งานใน C # 7.3 โปรดใช้ภาษาเวอร์ชัน 8.0 หรือสูงกว่า - มีข้อผิดพลาดในเครื่องหนึ่ง แต่ใช้งานได้กับเครื่องอื่น
เมื่อใช้Visual Studio Enterprise 16.3.7กับเครื่องที่แยกกันสองเครื่องเครื่องหนึ่งจะสร้างงานได้ดีและอีกเครื่องหนึ่งจะพ่นข้อผิดพลาด: คุณลักษณะ 'การใช้การประกาศ' ไม่พร้อมใช้งานใน C # 7.3 โปรดใช้ภาษาเวอร์ชัน 8.0 หรือสูงกว่า นี้สามารถแก้ไขได้อย่างง่ายดายบนเครื่องทำงานไม่มีโดยการตั้งค่าLangVersionใน.csprojขณะที่แนะนำที่นี่https://stackoverflow.com/a/48085575/3850405หรือให้ Visual Studio โดยอัตโนมัติแก้ไขมันเหมือนหน้าจอพิมพ์ดังกล่าวข้างต้น &lt;LangVersion&gt;8.0&lt;/LangVersion&gt; สิ่งที่ฉันไม่เข้าใจคือสาเหตุที่เครื่องหนึ่งสร้างได้ดีหากไม่มีบรรทัดนี้.csprojและเครื่องอื่นต้องการมัน
24 c#  .net-4.6 

1
ทำไมการนับ () วิธีการใช้คำหลัก "ตรวจสอบ"?
ขณะที่ผมกำลังมองความแตกต่างระหว่างจำนวนและนับกัน ()Count()ผมคิดว่าเหลือบรหัสที่มาของ ฉันเห็นข้อมูลโค้ดต่อไปนี้ซึ่งฉันสงสัยว่าทำไมcheckedคำหลักจึงมีความจำเป็น / จำเป็น: int num = 0; using (IEnumerator&lt;TSource&gt; enumerator = source.GetEnumerator()) { while (enumerator.MoveNext()) { num = checked(num + 1); } return num; } รหัสแหล่งที่มา: // System.Linq.Enumerable using System.Collections; using System.Collections.Generic; public static int Count&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source) { if (source == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } ICollection&lt;TSource&gt; collection …
23 c#  checked 

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