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

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

5
เหตุใดคุณสมบัติที่ไม่มีตัวตั้งค่าจึงไม่ถูกทำให้เป็นอนุกรม
ฉันมีคลาสที่ทำให้เป็นอนุกรมได้และหนึ่งในคุณสมบัติในคลาสของฉันสร้างขึ้นGuidใน getter คุณสมบัติไม่ใช้ตัวตั้งค่าและละเว้นระหว่างการทำให้เป็นอนุกรม เหตุใดจึงเป็นเช่นนั้นและฉันจึงต้องใช้ตัวตั้งค่าเสมอเพื่อให้คุณสมบัติของฉันเป็นแบบอนุกรม [Serializable] public class Example { [XmlAttribute("id")] public string Id { get { return Guid.NewGuid().ToString(); } } } ฉันลองใช้ตัวตั้งค่าว่างและได้รับการจัดลำดับอย่างถูกต้อง [Serializable] public class Example { [XmlAttribute("id")] public string Id { get { return Guid.NewGuid().ToString(); } set {} } } อัปเดต : คุณช่วยชี้ให้เห็นได้อย่างไรว่าฉันจะกำหนดคุณสมบัติที่ค่าไม่เคยเปลี่ยนแปลงหรือค่าที่สร้างขึ้นภายในได้อย่างไร

7
ฉันจะรับ GUID ของแอปพลิเคชันใน. net2.0 โดยทางโปรแกรมได้อย่างไร
ฉันต้องการเข้าถึงแอสเซมบลีของโครงการของฉันใน C # .NET2.0 ฉันเห็น GUID ในกล่องโต้ตอบ 'ข้อมูลการประกอบ' ในคุณสมบัติของโครงการและในขณะนี้ฉันเพิ่งคัดลอกไปยัง const ในรหัส GUID จะไม่มีวันเปลี่ยนแปลงดังนั้นนี่ไม่ใช่วิธีแก้ปัญหาที่เลวร้าย แต่ก็เป็นการดีที่จะเข้าถึงโดยตรง มีวิธีทำไหม?

9
วิธีสร้าง WPF UserControl ด้วยเนื้อหา NAMED
ฉันมีชุดการควบคุมพร้อมคำสั่งและตรรกะที่แนบมาซึ่งใช้ซ้ำในลักษณะเดียวกันอยู่ตลอดเวลา ฉันตัดสินใจที่จะสร้างการควบคุมผู้ใช้ที่มีการควบคุมและตรรกะทั่วไปทั้งหมด อย่างไรก็ตามฉันต้องการการควบคุมเพื่อให้สามารถเก็บเนื้อหาที่สามารถตั้งชื่อได้ ฉันลองทำสิ่งต่อไปนี้: <UserControl.ContentTemplate> <DataTemplate> <Button>a reused button</Button> <ContentPresenter Content="{TemplateBinding Content}"/> <Button>a reused button</Button> </DataTemplate> </UserControl.ContentTemplate> อย่างไรก็ตามดูเหมือนว่าเนื้อหาใด ๆ ที่อยู่ในส่วนควบคุมผู้ใช้จะไม่สามารถตั้งชื่อได้ ตัวอย่างเช่นถ้าฉันใช้การควบคุมในลักษณะต่อไปนี้: <lib:UserControl1> <Button Name="buttonName">content</Button> </lib:UserControl1> ฉันได้รับข้อผิดพลาดต่อไปนี้: ไม่สามารถตั้งค่าแอตทริบิวต์ Name "buttonName" ในองค์ประกอบ "Button" 'ปุ่ม' อยู่ภายใต้ขอบเขตขององค์ประกอบ 'UserControl1' ซึ่งมีชื่อที่ลงทะเบียนไว้แล้วเมื่อถูกกำหนดในขอบเขตอื่น ถ้าฉันลบ buttonName ออกมันจะคอมไพล์ แต่ฉันต้องสามารถตั้งชื่อเนื้อหาได้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
102 c#  wpf  xaml  user-controls  controls 

7
ตรวจสอบว่ามีโฟลเดอร์อยู่ในไดเร็กทอรีหรือไม่และสร้างโดยใช้ C #
ฉันจะตรวจสอบได้อย่างไรว่าไดเร็กทอรีC:/มีชื่อโฟลเดอร์MP_Uploadและหากไม่มีอยู่ให้สร้างโฟลเดอร์โดยอัตโนมัติ ฉันใช้ Visual Studio 2005 C #

12
"ดั้งเดิม JSON ไม่ถูกต้อง" ในการประมวลผล Ajax
ฉันได้รับข้อผิดพลาดในการโทร ajax จาก jQuery นี่คือฟังก์ชั่น jQuery ของฉัน: function DeleteItem(RecordId, UId, XmlName, ItemType, UserProfileId) { var obj = { RecordId: RecordId, UserId: UId, UserProfileId: UserProfileId, ItemType: ItemType, FileName: XmlName }; var json = Sys.Serialization.JavaScriptSerializer.serialize(obj); $.ajax({ type: "POST", url: "EditUserProfile.aspx/DeleteRecord", data: json, contentType: "application/json; charset=utf-8", dataType: "json", async: true, cache: false, success: …
102 c#  jquery  webmethod 

12
C # Lazy Loaded คุณสมบัติอัตโนมัติ
ใน C # มีวิธีเปลี่ยนคุณสมบัติอัตโนมัติให้เป็นคุณสมบัติอัตโนมัติที่โหลดแบบขี้เกียจด้วยค่าเริ่มต้นที่ระบุหรือไม่? โดยพื้นฐานแล้วฉันพยายามเปลี่ยนสิ่งนี้ ... private string _SomeVariable public string SomeVariable { get { if(_SomeVariable == null) { _SomeVariable = SomeClass.IOnlyWantToCallYouOnce(); } return _SomeVariable; } } เป็นสิ่งที่แตกต่างโดยที่ฉันสามารถระบุค่าเริ่มต้นและจัดการส่วนที่เหลือโดยอัตโนมัติ ... [SetUsing(SomeClass.IOnlyWantToCallYouOnce())] public string SomeVariable {get; private set;}

8
NewLine ในการสรุปวัตถุ
ทักทาย เมื่อตั้งค่าสรุปสำหรับคุณสมบัติ / ฟิลด์ / วิธี ฯลฯ .. เป็นไปได้ไหมที่จะมีการขึ้นบรรทัดใหม่ /// <summary> /// This is line 1 /// This is line 2 /// </summary> public bool TestLine { get; set; } เมื่อฉันตั้งค่านี้จะแสดงเป็นเมื่อวางเมาส์เหนือ: bool TestLine This is line 1 This is line 2 แต่ฉันต้องการให้แสดงเป็น: bool TestLine This is line 1 This is …
102 c#  newline  summary 

3
.NET Core DI วิธีการส่งผ่านพารามิเตอร์ไปยังตัวสร้าง
มีตัวสร้างบริการต่อไปนี้ public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } ทางเลือกในการส่งผ่านพารามิเตอร์โดยใช้กลไก. NET Core IOC คืออะไร _serviceCollection.AddSingleton<IOtherService , OtherService>(); _serviceCollection.AddSingleton<IAnotherOne , AnotherOne>(); _serviceCollection.AddSingleton<IService>(x=>new Service( _serviceCollection.BuildServiceProvider().GetService<IOtherService>(), _serviceCollection.BuildServiceProvider().GetService<IAnotherOne >(), "" )); มีวิธีอื่น ๆ ?

9
เนมสเปซและคลาสที่มีชื่อเดียวกัน?
ฉันกำลังจัดโปรเจ็กต์ห้องสมุดและฉันมีชื่อคลาสผู้จัดการส่วนกลางScenegraphและคลาสอื่น ๆ ทั้งหมดที่อาศัยอยู่ในเนมสเปซของ Scenegraph สิ่งที่ฉันต้องการจริงๆคือให้ฉากกราฟเป็นMyLib.Scenegraphและคลาสอื่น ๆMyLib.Scenegraph.*แต่ดูเหมือนว่าวิธีเดียวที่จะทำได้คือสร้างคลาสอื่น ๆ ทั้งหมดภายในคลาสScenegraphในไฟล์ Scenegraph.cs และนั่นก็เทอะทะเกินไป . แต่ฉันได้จัดระเบียบเป็นMylib.Scenegraph.ScenegraphและMyLib.Scenegraph.*ประเภทของงาน แต่ฉันพบว่า Visual Studio สับสนภายใต้เงื่อนไขบางประการว่าฉันกำลังอ้างถึงคลาสหรือเนมสเปซ มีวิธีที่ดีไหมในการจัดระเบียบแพ็กเกจนี้เพื่อให้สะดวกสำหรับผู้ใช้โดยไม่ต้องรวมโค้ดทั้งหมดเข้าด้วยกันอย่างไม่เป็นระเบียบ?
102 c#  class  namespaces 

4
ไม่สามารถคืนค่า Tuple จากวิธีการโดยใช้ Visual Studio 2017 และ C # 7.0
ฉันได้ติดตั้ง Visual Studio 2017 Community ที่เปิดตัวเมื่อสัปดาห์ที่แล้วและฉันเริ่มสำรวจคุณสมบัติใหม่ของ C # 7 ดังนั้นฉันจึงสร้างวิธีง่ายๆที่คืนค่าสองค่า: public class Program { public static void Main(string[] args) { (int sum, int count) a = ReturnTwoValues(); } static (int sum, int count) ReturnTwoValues() => (1, 1); } คอมไพเลอร์กำลังสร้างข้อผิดพลาด: ข้อผิดพลาด CS8137 ไม่สามารถกำหนดคลาสหรือสมาชิกที่ใช้ทูเปิลได้เนื่องจากไม่พบคอมไพเลอร์ประเภท 'System.Runtime.CompilerServices.TupleElementNamesAttribute' คุณขาดข้อมูลอ้างอิงหรือไม่? ฉันพยายามค้นหาข้อมูลอ้างอิงในกรอบที่มีชื่อนี้ แต่โชคไม่ดี! ถ้าเราต้องการอะไรเพิ่มเติมเพื่อใช้ฟีเจอร์ C # 7.0 …

5
ฉันจะตั้งค่าข้อความของกล่องข้อความเป็นตัวหนาในขณะทำงานได้อย่างไร
ฉันใช้แบบฟอร์ม Windows และฉันมีกล่องข้อความที่ฉันต้องการทำให้ข้อความเป็นตัวหนาในบางครั้งหากมีค่า ฉันจะเปลี่ยนลักษณะแบบอักษรในขณะทำงานได้อย่างไร ฉันเห็นว่ามีคุณสมบัติที่เรียกว่า textbox1.Font.Bold แต่นี่เป็นคุณสมบัติรับเท่านั้น
102 c#  winforms  textbox  fonts 

10
วิธีการแปลงวัตถุเป็นอาร์เรย์ไบต์ใน C #
ฉันมีคอลเล็กชันของอ็อบเจ็กต์ที่ต้องเขียนลงในไฟล์ไบนารี BinaryFormatterฉันต้องไบต์ในไฟล์ที่จะมีขนาดกะทัดรัดดังนั้นผมจึงไม่สามารถใช้ BinaryFormatterพ่นข้อมูลทุกประเภทสำหรับความต้องการในการแยกส่วน ถ้าฉันพยายาม byte[] myBytes = (byte[]) myObject ฉันได้รับข้อยกเว้นรันไทม์ ฉันต้องการให้สิ่งนี้เร็วดังนั้นฉันจึงไม่ควรคัดลอกอาร์เรย์ของไบต์รอบ ๆ ฉันแค่อยากให้นักแสดงbyte[] myBytes = (byte[]) myObjectทำงาน! ตกลงเพื่อให้ชัดเจนฉันไม่มีข้อมูลเมตาใด ๆในไฟล์เอาต์พุต ไบต์ของวัตถุเท่านั้น บรรจุวัตถุต่อวัตถุ จากคำตอบที่ได้รับดูเหมือนว่าฉันจะเขียนBuffer.BlockCopyโค้ดระดับต่ำ อาจใช้รหัสที่ไม่ปลอดภัย
102 c# 

6
ฟังก์ชันที่สร้างการประทับเวลาใน c #
ฉันสงสัยว่ามีวิธีสร้างการประทับเวลาใน c # จากวันที่เวลาหรือไม่ ฉันต้องการค่าความแม่นยำระดับมิลลิวินาทีที่ใช้งานได้ใน Compact Framework ด้วย (บอกว่าเนื่องจาก DateTime ToBinary () ไม่มีอยู่ใน CF) ปัญหาของฉันคือฉันต้องการเก็บค่านี้ในฐานข้อมูลแบบไม่เชื่อเรื่องพระเจ้าดังนั้นฉันจึงสามารถเรียงลำดับได้ในภายหลังและค้นหาว่าค่าใดมากกว่าค่าอื่นเป็นต้น

10
Visual Studio: คำสั่งหลังการสร้างหลายคำสั่ง?
Visual Studio 2008 ให้ฉันประกาศคำสั่งและแนบไปกับเหตุการณ์หลังการสร้างสำหรับโครงการ เช่นเดียวกับนักพัฒนาหลายคนฉันใช้มันเป็นประจำเพื่อ xcopy ไฟล์ไปยังไดเร็กทอรีเอาต์พุตของแอปพลิเคชัน ฉันกำลังทำงานในโปรเจ็กต์ที่ฉันต้องการ xcopy ไฟล์จากที่ต่างๆสองแห่งไปยังปลายทางที่ต่างกันสองแห่งทั้งหมดนี้อยู่ในโปรเจ็กต์เดียว กล่าวอีกนัยหนึ่งฉันต้องเรียกใช้คำสั่ง xcopy สองคำสั่งที่แตกต่างกันจากเหตุการณ์หลังการสร้างเดียวกัน ดูเหมือนว่าเหตุการณ์หลังสร้างจะใช้คำสั่งเดียวเท่านั้นและถ้าฉันต้องการเรียกใช้คำสั่งหลายคำสั่งฉันจะต้องใส่คำสั่งในไฟล์ * .bat และเรียกสิ่งนั้นจากเหตุการณ์หลังการสร้าง ถูกต้องหรือมีวิธีที่ง่ายกว่าในการเรียกใช้คำสั่งสองคำสั่งจากเหตุการณ์หลังการสร้าง ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของ.

17
ประโยชน์ของการใช้ตัวดำเนินการตามเงื่อนไข?: (ternary)
ประโยชน์และข้อเสียของตัวดำเนินการคืออะไรเมื่อเทียบกับคำสั่ง if-else มาตรฐาน สิ่งที่ชัดเจนคือ: เงื่อนไข?: Operator สั้นลงและกระชับมากขึ้นเมื่อต้องจัดการกับการเปรียบเทียบมูลค่าโดยตรงและการมอบหมายงาน ดูเหมือนจะไม่ยืดหยุ่นเท่าโครงสร้าง if / else มาตรฐานถ้า / อื่น สามารถนำไปใช้กับสถานการณ์อื่น ๆ (เช่นการเรียกใช้ฟังก์ชัน) มักจะยาวโดยไม่จำเป็น ความสามารถในการอ่านดูเหมือนจะแตกต่างกันไปขึ้นอยู่กับคำแถลง หลังจากที่ได้สัมผัสกับโอเปอเรเตอร์?: เป็นครั้งแรกฉันใช้เวลาพอสมควรในการแยกแยะว่ามันทำงานอย่างไร คุณจะแนะนำให้ใช้ทุกที่ที่เป็นไปได้หรือยึดติดกับ if / else เนื่องจากฉันทำงานกับผู้ที่ไม่ใช่โปรแกรมเมอร์หลายคน

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