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

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

1
Directory.GetFiles ไม่รับไฟล์ทั้งหมด
ฉันมีรหัสบางอย่างที่มีไว้เพื่อรับไฟล์ในไดเรกทอรีซึ่งง่ายพอ foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly)) ไฟล์ถูกตั้งชื่อดังนี้: Totals.CSV142344 Totals.CSV142409 Totals.CSV142433 Totals.CSV142501 Totals.CSV142528 ปัญหาของฉันคือมันไม่ได้รับไฟล์สุดท้าย ฉันได้แก้ไขรหัสโดยใส่สิ่งนี้แทน: foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly)) การบอกรับไฟล์ใด ๆ ที่มีทั้ง Totals และ. csv, และทุกอย่างที่อยู่หลัง. csv สิ่งที่ฉันไม่ได้คือทำไมมันถึงมีสี่อันดับแรก แต่ไม่ใช่ด้านล่าง ฉันคิดว่าไม่มีไฟล์ใดที่จะถูกเลือกโดยรหัสดั้งเดิม?
23 c#  filenames 

1
เหตุใดฉันจึงประกาศตัวแปรลูกที่มีชื่อเดียวกันกับตัวแปรในขอบเขตพาเรนต์
ฉันเขียนโค้ดบางส่วนเมื่อเร็ว ๆ นี้ซึ่งฉันนำชื่อตัวแปรมาใช้ซ้ำโดยไม่ได้ตั้งใจเป็นพารามิเตอร์ของการดำเนินการที่ประกาศไว้ในฟังก์ชันที่มีตัวแปรชื่อเดียวกันอยู่แล้ว ตัวอย่างเช่น: var x = 1; Action<int> myAction = (x) => { Console.WriteLine(x); }; เมื่อฉันเห็นการทำสำเนาฉันรู้สึกประหลาดใจเมื่อเห็นว่าโค้ดรวบรวมและทำงานได้อย่างสมบูรณ์แบบซึ่งไม่ใช่พฤติกรรมที่ฉันคาดหวังจากสิ่งที่ฉันรู้เกี่ยวกับขอบเขตใน C # บาง Googling รวดเร็วเปิดขึ้นดังนั้นคำถามที่บ่นว่ารหัสที่คล้ายกันไม่สร้างข้อผิดพลาดเช่นแลมบ์ดาขอบเขตชี้แจง (ฉันวางโค้ดตัวอย่างนั้นลงใน IDE ของฉันเพื่อดูว่ามันจะทำงานได้หรือไม่เพื่อให้แน่ใจว่ามันจะทำงานได้อย่างสมบูรณ์) นอกจากนี้เมื่อฉันป้อนกล่องโต้ตอบเปลี่ยนชื่อใน Visual Studio สิ่งแรกxจะถูกเน้นเป็นชื่อที่ขัดแย้งกัน ทำไมรหัสนี้ใช้งานได้? ฉันใช้ C # 8 กับ Visual Studio 2019

4
.Net Core 3.0 ตรวจพบวัฏจักรวัตถุที่เป็นไปได้ซึ่งไม่รองรับ
ฉันมี 2 เอนทิตีที่เกี่ยวข้องกันเป็นหนึ่งเดียวกับหลาย ๆ public class Restaurant { public int RestaurantId {get;set;} public string Name {get;set;} public List<Reservation> Reservations {get;set;} ... } public class Reservation{ public int ReservationId {get;set;} public int RestaurantId {get;set;} public Restaurant Restaurant {get;set;} } ถ้าฉันลองร้านอาหารที่มีการจองโดยใช้ API ของฉัน var restaurants = await _dbContext.Restaurants .AsNoTracking() .AsQueryable() .Include(m => …

5
วิธีจับตัวแปรทั้งหมดของข้อยกเว้นทั่วไปใน C #
ฉันต้องการที่จะตรวจจับตัวแปรทั้งหมดของคลาสข้อยกเว้นทั่วไปและฉันสงสัยว่ามีวิธีที่จะทำโดยไม่มีบล็อก catch ที่หลากหลายหรือไม่ ตัวอย่างเช่นฉันมีคลาสยกเว้น: public class MyException<T> : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } } และสองคลาสที่ได้รับ: public class MyDerivedStringException : MyException<string> { public MyDerivedStringException(string prop) : base(prop) { } } public class MyDerivedIntException : MyException<int> { public MyDerivedIntException(int …
22 c#  generics  exception 

1
วิธีการตั้งค่าการตั้งค่าแอพใน. Net Core 3 Worker Service
ฉันได้ดูบทเรียนจำนวนหนึ่งและคำถาม SO (เช่นการตั้งค่าแอพ. Net Core ) เกี่ยวกับการอ่าน appsettings.json ใน. Net Core 3 และฉันไม่สามารถหาคำแนะนำใด ๆ เกี่ยวกับวิธีใช้เมื่อจัดการกับบริการของผู้ปฏิบัติงาน ไม่มีวิธีการเริ่มต้น แต่ฉันมี Program.cs ด้วยวิธีการหลัก: public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } ฉันจะอ่านเกี่ยวกับไฟล์ appsettings.json ใน Worker Service …

5
วิธี c # กับ params ไม่ จำกัด หรือวิธีการที่มีอาร์เรย์หรือรายการ?
ฉันเพิ่งเรียนรู้ว่าคุณสามารถสร้างวิธีที่มีพารามิเตอร์ไม่ จำกัด เช่น: SomeMethod(params int[] numbers); แต่คำถามของฉันคืออะไรความแตกต่างระหว่างที่และเพียงแค่สร้างวิธีการที่ได้รับรายชื่อหรืออาร์เรย์? SomeMethod(int[] numbers); SomeMethod(List<int> numbers); บางทีมันอาจมีผลกระทบต่อประสิทธิภาพบ้างไหม? ฉันไม่เข้าใจหรือเห็นอย่างถ่องแท้ว่าคุณต้องการให้มีพารามิเตอร์แบบไม่ จำกัด จำนวนเท่าใด การค้นหาด่วนบน google ไม่ได้ช่วยฉันหวังว่าคุณจะช่วยฉันได้
21 c#  methods 

1
ความแตกต่างระหว่างการใช้และรอการใช้งานคืออะไร? และฉันจะตัดสินใจได้อย่างไรว่าจะใช้อันไหน
ฉันสังเกตเห็นว่าในบางกรณี Visual Studio แนะนำให้ทำเช่นนี้ await using var disposable = new Disposable(); // Do something แทนสิ่งนี้ using var disposable = new Disposable(); // Do something ความแตกต่างระหว่างusingและawait usingคืออะไร? ฉันจะตัดสินใจได้อย่างไรว่าควรใช้อันไหน
21 c#  c#-8.0 

3
วิธีปฏิบัติที่ดีที่สุดสำหรับการใช้ประเภทข้อมูลอ้างอิงที่เป็นโมฆะสำหรับ DTO
ฉันมี DTO ซึ่งบรรจุด้วยการอ่านจากตาราง DynamoDB พูดว่าตอนนี้ดูเหมือนว่านี้: public class Item { public string Id { get; set; } // PK so technically cannot be null public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks public string Description { get; set; } // can …

4
วิธีที่เหมาะสมในการจัดการกับข้อยกเว้นใน AsyncDispose
ระหว่างเปลี่ยนเป็น. NET Core 3 IAsynsDisposableใหม่ฉันได้พบกับปัญหาต่อไปนี้ แกนหลักของปัญหา: ถ้าDisposeAsyncมีข้อยกเว้นข้อยกเว้นนี้ซ่อนข้อยกเว้นใด ๆ ที่ถูกโยนลงในawait using-block class Program { static async Task Main() { try { await using (var d = new D()) { throw new ArgumentException("I'm inside using"); } } catch (Exception e) { Console.WriteLine(e.Message); // prints I'm inside dispose } } } class D …

3
'ILoggerFactory' ไม่มีคำจำกัดความสำหรับ 'AddConsole'
private ILoggerFactory ConfigureLogging(ILoggerFactory factory) { factory.AddConsole(); return factory; } ฉันได้พบชิ้นส่วนของโค้ดข้างต้นบนGithub มันทำให้เกิดข้อผิดพลาดดังต่อไปนี้: 'ILoggerFactory' does not contain a definition for 'AddConsole' and the best extension method overload 'ConsoleLoggerExtensions.AddConsole(ILoggingBuilder)' requires a receiver of type 'ILoggingBuilder' ฉันใช้ NET Core 3.0 และฉันได้ติดตั้งแพ็คเกจ NuGet ต่อไปนี้แล้ว <PackageReference Include="Discord.Net" Version="2.1.1" /> <PackageReference Include="Discord.Net.Commands" Version="2.1.1" /> <PackageReference Include="Discord.Net.WebSocket" Version="2.1.1" …
20 c#  nuget  core  discord.net 

2
วิธีการเปลี่ยนนามสกุล AddJwtBearer ใน. NET Core 3.0
ฉันมีรหัสต่อไปนี้ซึ่งรวบรวมและทำงานใน. NET Core 2.2: byte[] key = Encoding.ASCII.GetBytes(Constants.JWT_SECRET); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); ใน. NET Core …

5
ASP.NET Core 3.0 System.Text.Json การจัดอันดับกรณีอูฐ
ในโครงการ ASP.NET Core 3.0 Web API คุณจะระบุตัวเลือกการเป็นอนุกรมSystem.Text.Jsonเพื่อทำให้เป็นอันดับ / deserialize คุณสมบัติ Pascal Case เพื่อ Camel Case และในทางกลับกันโดยอัตโนมัติได้อย่างไร รับโมเดลที่มีคุณสมบัติ Pascal Case เช่น: public class Person { public string Firstname { get; set; } public string Lastname { get; set; } } และรหัสที่จะใช้ System.Text.Json เพื่อ deserialize สตริง JSON ให้เป็นประเภทของPersonคลาส: var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}"; …

2
ทำไมคอมไพเลอร์ C # อนุญาตให้มีตัวแปรที่ซ้ำกันในขอบเขตซ้อนกัน?
ในอดีตเมื่อพัฒนาใน. Net ฉันไม่สามารถทำซ้ำชื่อของตัวแปรในขอบเขตที่ซ้อนกันได้ อย่างไรก็ตามหลังจากอัปเดต Visual Studio 2019 ไปเป็นเวอร์ชัน 16.4.2 เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่าชื่อตัวแปรสามารถทำซ้ำได้ในขอบเขตที่ซ้อนกัน ตัวอย่างเช่น: var test = "hello"; Console.WriteLine(test); var things = new []{"one", "two", "three"}; things.Select(test => // <- test is duplicated here, normally this breaks compilation { Console.WriteLine(test); return test; }).ToList(); // output: // hello // one // two …

1
แปลง IAsyncEnumerable เป็น List
ดังนั้นใน C # 8 เราจึงได้เพิ่มIAsyncEnumerableส่วนต่อประสาน หากเรามีสิ่งปกติIEnumerableเราสามารถสร้างListคอลเล็กชั่นอื่น ๆ ที่เราต้องการได้ ขอบคุณ Linq ที่นั่น var range = Enumerable.Range(0, 100); var list = range.ToList(); ตอนนี้ฉันต้องการแปลงIAsyncEnumerableเป็น a Listและแน่นอนแบบอะซิงโครนัส มีการใช้งาน Linq สำหรับกรณีนั้นหรือไม่? ถ้าไม่มีฉันจะแปลงเป็นตัวเองได้อย่างไร

3
มีความแตกต่างระหว่าง“ double val = 1;” หรือไม่ และ“ double val = 1D;” หรือไม่
มีความแตกต่างระหว่างโค้ดสองชิ้นต่อไปนี้หรือไม่? class Test { public readonly double Val; public Test(bool src) { this.Val = src ? 1 : 0; } } class Test { public readonly double Val; public Test(bool src) { this.Val = src ? 1D : 0D; } } ฉันพบว่ารหัสฐานของเราใช้วิธีที่สองในการเขียน
17 c#  .net 

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