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

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

2
JavaScript เป็น C # การสูญเสียความแม่นยำเชิงตัวเลข
เมื่อซีเรียลไลซ์และค่าดีซีเรียลไลซ์ระหว่าง JavaScript และ C # โดยใช้ SignalR กับ MessagePack ฉันเห็นการสูญเสียความแม่นยำเล็กน้อยใน C # เมื่อสิ้นสุดการรับ ตัวอย่างเช่นฉันส่งค่า 0.005 จาก JavaScript ไปยัง C # เมื่อค่า deserialized ปรากฏขึ้นในด้าน C # ฉันได้รับค่า0.004999999888241291ซึ่งอยู่ใกล้ แต่ไม่ใช่ 0.005 คุ้มค่าในด้าน JavaScript เป็นNumberและที่ด้านข้าง C # doubleฉันใช้ ฉันได้อ่านแล้วว่าจาวาสคริปต์ไม่สามารถแสดงตัวเลขทศนิยมได้อย่างแม่นยำซึ่งสามารถนำไปสู่ผลลัพธ์เช่น0.1 + 0.2 == 0.30000000000000004นั้น ฉันสงสัยว่าปัญหาที่ฉันเห็นเกี่ยวข้องกับคุณสมบัติของ JavaScript นี้ ส่วนที่น่าสนใจคือฉันไม่ได้เห็นปัญหาแบบเดิม ๆ การส่ง 0.005 จาก C # ถึง …

2
วิธีการใช้ C # 8.0 ชนิดอ้างอิงที่สามารถลบล้างได้ด้วยโมเดล Entity Framework Core ได้อย่างไร
ฉันเปิดใช้งาน C # 8.0 ประเภทการอ้างอิงที่เป็นโมฆะในโครงการ. NET Core 3.0 โครงการใช้ Entity Framework Core 3.0 เพื่อเข้าถึงฐานข้อมูล ต่อไปนี้เป็นตัวแบบข้อมูลที่หัวเรื่องไม่ควรเป็นโมฆะ public class Vehicle { public int Id { get; private set; } public string Title { get; private set; } // Entity Framework Core is instructed to bind to the private _drivers field in a …

3
จะหลีกเลี่ยงการละเมิดหลักการ DRY ได้อย่างไรเมื่อคุณต้องมีโค้ดทั้ง async และ sync?
ฉันกำลังทำงานในโครงการที่ต้องการสนับสนุนทั้ง async และ sync version ของตรรกะ / วิธีการเดียวกัน ตัวอย่างเช่นฉันต้องมี: public class Foo { public bool IsIt() { using (var conn = new SqlConnection(DB.ConnString)) { return conn.Query<bool>("SELECT IsIt FROM SomeTable"); } } public async Task<bool> IsItAsync() { using (var conn = new SqlConnection(DB.ConnString)) { return await conn.QueryAsync<bool>("SELECT IsIt FROM SomeTable"); } …
15 c#  .net  asynchronous 

1
วิธีการใช้. NET reflection เพื่อตรวจสอบชนิดอ้างอิง nullable
C # 8.0 แนะนำประเภทอ้างอิงที่ไม่มีค่า นี่คือคลาสธรรมดาที่มีคุณสมบัติเป็นโมฆะ: public class Foo { public String? Bar { get; set; } } มีวิธีการตรวจสอบทรัพย์สินชั้นใช้ประเภทอ้างอิง nullable ผ่านการสะท้อน?

2
ไม่มีข้อยกเว้นเมื่อถูกเปิด MySqlConnection หรือไม่
ฉันเพิ่งเริ่มต้นด้วย async และ Task's และรหัสของฉันหยุดการประมวลผล มันเกิดขึ้นเมื่อฉันมีแพ็คเก็ตเครือข่ายขาเข้าและฉันพยายามและสื่อสารกับฐานข้อมูลภายในตัวจัดการแพ็คเก็ต public class ClientConnectedPacket : IClientPacket { private readonly EntityFactory _entityFactory; public ClientConnectedPacket(EntityFactory entityFactory) { _entityFactory= entityFactory; } public async Task Handle(NetworkClient client, ClientPacketReader reader) { client.Entity = await _entityFactory.CreateInstanceAsync( reader.GetValueByKey("unique_device_id")); // this Console.WriteLine never gets reached Console.WriteLine($"Client [{reader.GetValueByKey("unique_device_id")}] has connected"); } } วิธีการจัดการได้รับการเรียกจากงาน async …
14 c#  mysql 

3
ทำไมต้องทำงานต่อเนื่องเมื่องานทั้งหมดถูกดำเนินการพร้อมกัน?
ฉันเพิ่งสังเกตข้อสงสัยเกี่ยวกับTask.WhenAllวิธีการเมื่อทำงานบน. NET Core 3.0 ฉันส่งTask.Delayงานง่าย ๆเป็นอาร์กิวเมนต์เดียวไปยังTask.WhenAllและฉันคาดว่างานที่ถูกห่อจะทำงานเหมือนกันกับงานต้นฉบับ แต่นี่ไม่ใช่กรณี ความต่อเนื่องของงานดั้งเดิมจะถูกดำเนินการแบบอะซิงโครนัส (ซึ่งเป็นที่ต้องการ) และความต่อเนื่องของหลาย ๆ ตัวTask.WhenAll(task)จะถูกดำเนินการแบบซิงโครนัสแบบหนึ่งหลังจากสิ่งอื่น ๆ นี่คือตัวอย่างของพฤติกรรมนี้ งานของผู้ปฏิบัติงานสี่คนกำลังรอTask.Delayงานเดียวกันให้เสร็จและดำเนินการคำนวณต่อไปอย่างหนัก (จำลองโดย a Thread.Sleep) var task = Task.Delay(500); var workers = Enumerable.Range(1, 4).Select(async x => { Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}" + $" [{Thread.CurrentThread.ManagedThreadId}] Worker{x} before await"); await task; //await Task.WhenAll(task); Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}" + $" [{Thread.CurrentThread.ManagedThreadId}] Worker{x} after await"); Thread.Sleep(1000); // …

2
ฉันสามารถบอกอ้างอิง C # nullable ว่าวิธีการตรวจสอบเป็นโมฆะได้อย่างมีประสิทธิภาพในเขตข้อมูล
พิจารณารหัสต่อไปนี้: #nullable enable class Foo { public string? Name { get; set; } public bool HasName => Name != null; public void NameToUpperCase() { if (HasName) { Name = Name.ToUpper(); } } } ในการชื่อ = ชื่อ. ToUpper () ฉันได้รับคำเตือนว่าชื่อเป็นการอ้างอิงโมฆะที่เป็นไปได้ซึ่งไม่ถูกต้องชัดเจน ฉันสามารถแก้ไขคำเตือนนี้ได้โดยการใช้ HasName ดังนั้นเงื่อนไขก็คือ (Name! = null) มีวิธีใดบ้างที่ฉันสามารถสั่งให้คอมไพเลอร์ได้ว่าการตอบสนองที่แท้จริงจาก HasName แสดงถึงข้อ จำกัด ที่ไม่สามารถลบล้างได้ในชื่อ? …

2
วิธีใช้คุณลักษณะ c # 8.0 ใหม่ในมุมมองมีดโกน
ฉันได้อัปเดตแอปพลิเคชันเว็บ ASP.NET Mvc 5 ของฉันเพื่อใช้คุณสมบัติ c # 8.0 ใหม่ผ่าน Visual Studio 2019 และทุกอย่างทำงานได้ดีจนกระทั่งฉันพยายามใช้คุณลักษณะใหม่เหล่านี้ภายในมุมมองมีดโกน ตัวอย่างเช่นหากฉันพยายามใช้นิพจน์สวิตช์ใหม่: @{ ViewBag.Title = "About"; var foo = 1; var bar = foo switch { 1 => "one", 2 => "two", _ => string.Empty }; } <h2>@ViewBag.Title.</h2> <h3>@ViewBag.Message</h3> <p>Use this area to provide additional information.</p> คอมไพเลอร์จะไม่บ่นจนกว่าฉันจะพยายามไปที่หน้าให้ฉันข้อผิดพลาดในการรวบรวม ฉันสงสัยว่าMicrosoft.CodeDom.Providers.DotNetCompilerPlatformต้องอัปเดต …
14 c#  asp.net-mvc  razor 

6
ข้อความ 403: Legacy People API ไม่ได้ถูกใช้ในโครงการ
Google API ทำงานอยู่ แต่ให้ข้อผิดพลาด Legacy People API ไม่ได้ใช้ในโครงการก่อนหน้านี้หรือปิดใช้งาน เปิดใช้งานโดยไปที่https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=จากนั้นลองอีกครั้ง หากคุณเปิดใช้งาน API นี้เมื่อเร็ว ๆ นี้รอสักครู่เพื่อให้การดำเนินการเผยแพร่ไปยังระบบของเราและลองอีกครั้ง
14 c#  asp.net  google-api 

3
'ไม่สามารถโหลดประเภท' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'จากชุดประกอบ' Microsoft.AspNetCore.Mvc.Formatters.Json, Version = 3.0.0.0
ฉันใช้netstandard2.1ห้องสมุดในnetcoreapp3.0เว็บแอปพลิเคชันของฉัน เมื่อเพิ่มบริการของStartupฉันฉันได้รับข้อผิดพลาดด้านล่าง: 'ไม่สามารถโหลดประเภท' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'จากชุดประกอบ' Microsoft.AspNetCore.Mvc.Formatters.Json, Version = 3.0.0.0 ฉันยังใช้คุณสมบัติบางอย่างจากMicrosoft.AspNetCore.Mvcแพ็คเกจ 2.2.0 ในไลบรารีคลาสของฉัน นี่คือห้องสมุดของฉัน.csproj, <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" /> </ItemGroup> </Project> นี่คือServiceExtensionsชั้นเรียนของฉันจากห้องสมุดของฉัน public static class ServiceExtensions { public static IMvcBuilder AddMyLibrary(this IMvcBuilder builder) { builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); builder.AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }); builder.Services.ConfigureOptions<ConfigureLibraryOptions>(); return …

3
สร้างหนึ่ง datatable จากสองด้วยเงื่อนไขบางอย่าง
ก่อนอื่นฉันต้องได้รับข้อมูลทั้งหมดจาก ODBC (นี่ใช้งานได้แล้ว) จากนั้นส่วนที่ซับซ้อนที่สุดที่ฉันยังไม่แน่ใจยังสามารถทำได้ มีข้อมูลสองตารางใน ODBC ฉันกำลังรวมเข้ากับรหัสปัจจุบันของฉันและกรองด้วยพารามิเตอร์บางอย่าง ตารางที่ 1 ในฐานข้อมูล: NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE 123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1 133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1 153 MB E200 C25 …
13 c#  datatable 

4
บางครั้งกระบวนการจะหยุดทำงานในขณะที่รอ Exit
อะไรเป็นสาเหตุที่ทำให้กระบวนการของฉันหยุดชะงักในระหว่างรอทางออก รหัสนี้จะต้องเริ่มสคริปต์ PowerShell ซึ่งภายในดำเนินการหลายอย่างเช่นเริ่มต้นการคอมไพล์โค้ดใหม่ผ่าน MSBuild แต่อาจเป็นปัญหาคือมันสร้างเอาต์พุตมากเกินไปและรหัสนี้จะติดค้างในขณะที่รอเพื่อออกจากสคริปต์ Power shell อย่างถูกต้อง มันค่อนข้าง "แปลก" เพราะบางครั้งรหัสนี้ทำงานได้ดีและบางครั้งมันก็ติด รหัสค้างที่: process.WaitForExit (ProcessTimeOutMiliseconds); สคริปต์ Powershell ดำเนินการในระยะเวลา 1-2 วินาทีในขณะที่การหมดเวลาคือ 19 วินาที public static (bool Success, string Logs) ExecuteScript(string path, int ProcessTimeOutMiliseconds, params string[] args) { StringBuilder output = new StringBuilder(); StringBuilder error = new StringBuilder(); using (var outputWaitHandle = …
13 c# 

2
ฉันสามารถส่งอีเมล SMTP ผ่านกล่องจดหมายที่แชร์ของ Office365 ได้หรือไม่
เรากำลังคิดที่จะย้ายไปอยู่ที่ O365; อย่างไรก็ตามเราได้พัฒนาซอฟต์แวร์ที่ใช้เซิร์ฟเวอร์ Exchange ปัจจุบันของเราเพื่อส่งอีเมลไปยังผู้ใช้ภายนอกรวมถึงกล่องสนับสนุนเมื่อเกิดข้อผิดพลาด ฉันกำลังทดสอบสิ่งนี้เพื่อให้แน่ใจว่ารหัสที่เรามีจะยังคงทำงานร่วมกับ O365 ได้ แต่จนถึงตอนนี้ฉันยังไม่ประสบความสำเร็จมาก ฉันได้ลองใช้ SmtpClient ของ. Net และ SmtpClient ของ MailKit แล้วและดูเหมือนว่าจะไม่มีใครทำงานได้ ฉันได้รับข้อผิดพลาดอย่างต่อเนื่อง (นี่เป็นข้อผิดพลาดจาก MailKit - ข้อผิดพลาด. Net คล้ายกัน) "AuthenticationInvalidCredentials: 5.7.3 การตรวจสอบสิทธิ์ไม่สำเร็จ [* .prod.exchangelabs.com]" ฉันสามารถใช้ข้อมูลประจำตัวที่ฉันมีในรหัสของฉันเพื่อเข้าสู่ OWA - ดังนั้นฉันรู้ว่าข้อมูลประจำตัวที่ถูกต้อง เป็นไปไม่ได้ที่จะส่งอีเมลผ่าน O356? มีการกำหนดค่าพิเศษใด ๆ ที่จะเกิดขึ้นใน Exchange เพื่อให้เป็นไปได้หรือไม่ นี่คือสิ่งที่ฉันได้ลองไปแล้ว: MailKit var msg = new MimeMessage(); msg.From.Add(new MailboxAddress("Support","support@mydomain.com")); …
13 c#  .net  smtp  office365  mailkit 

1
ASP.NET MVC Core 3.0 API เป็นอนุกรม Enums เป็นสตริง
วิธีการทำให้เป็นอันดับ Enum เขตข้อมูลเพื่อสายอักขระแทนการ Int ใน ASP.NET MVC Core 3.0 ฉันไม่สามารถทำแบบเก่าได้ services.AddMvc().AddJsonOptions(opts => { opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter()); }) ฉันได้รับข้อผิดพลาด: ไม่สามารถแปลงจาก 'Newtonsoft.Json.Converters.StringEnumConverter' เป็น 'System.Text.Json.Serialization.JsonConverter'

1
C # สลับนิพจน์ที่ส่งคืนผลลัพธ์ที่ต่างกัน
ฉันเปลี่ยนเป็น C # 8 ในโครงการใดโครงการหนึ่งของฉัน และฉันได้ย้ายswitchประโยคทั้งหมดของฉันไปยังนิพจน์ อย่างไรก็ตามฉันพบว่าโครงการของฉันเริ่มทำงานแตกต่างกันและฉันพบว่าเป็นเพราะการswitchแสดงออก ให้รับโค้ดนี้เป็นตัวอย่าง class Program { public enum DataType { Single, Double, UInt16, UInt32, UInt64, Int16, Int32, Int64, Byte } static void Main(string[] args) { dynamic value1 = 5; dynamic value2 = 6; var casted = CastToType(value1, DataType.Int16); var casted1 = CastToTypeExpression(value2, DataType.Int16); var type …
13 c# 

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