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

C # เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่มีการจัดการและรวบรวมขยะที่สร้างขึ้นโดย Microsoft ควบคู่ไปกับแพลตฟอร์ม. NET

3
ความซับซ้อนของตัวสร้างควรจะเป็น
ฉันกำลังพูดคุยกับเพื่อนร่วมงานของฉันว่าคอนสตรัคเตอร์สามารถทำงานได้เท่าใด ฉันมีคลาส B ที่ต้องใช้วัตถุอื่นภายใน A. วัตถุ A เป็นหนึ่งในสมาชิกไม่กี่คนที่คลาส B ต้องการทำงาน วิธีการสาธารณะทั้งหมดขึ้นอยู่กับวัตถุภายใน A. ข้อมูลเกี่ยวกับวัตถุ A ถูกเก็บไว้ในฐานข้อมูลดังนั้นฉันจึงพยายามตรวจสอบและรับมันโดยดูจากฐานข้อมูลในตัวสร้าง เพื่อนร่วมงานของฉันชี้ให้เห็นว่าตัวสร้างไม่ควรทำงานมากไปกว่าการจับพารามิเตอร์คอนสตรัคเตอร์ เนื่องจากวิธีการสาธารณะทั้งหมดจะล้มเหลวอย่างไรก็ตามหากไม่พบวัตถุ A โดยใช้อินพุตไปยังตัวสร้างฉันจึงแย้งว่าแทนที่จะอนุญาตให้สร้างตัวอย่างและล้มเหลวในภายหลัง คนอื่นคิดอย่างไร ฉันใช้ C # หากสร้างความแตกต่าง การอ่านมีเหตุผลที่จะทำงานของวัตถุทั้งหมดในคอนสตรัคเตอร์หรือไม่? ฉันสงสัยว่าการดึงวัตถุ A โดยไปที่ DB เป็นส่วนหนึ่งของ "การเริ่มต้นอื่น ๆ ที่จำเป็นในการทำให้วัตถุพร้อมใช้งาน" เพราะหากผู้ใช้ส่งค่าผิดไปยังตัวสร้างฉันจะไม่สามารถใช้วิธีการสาธารณะใด ๆ ตัวสร้างควรสร้างอินสแตนซ์ของฟิลด์ของวัตถุและทำการเริ่มต้นอื่น ๆ ที่จำเป็นเพื่อทำให้วัตถุพร้อมใช้งาน โดยทั่วไปหมายถึงตัวสร้างมีขนาดเล็ก แต่มีสถานการณ์สมมติที่จะมีงานจำนวนมาก
18 c#  constructors 

13
การใช้ Windows Services ในทางปฏิบัติมีอะไรบ้าง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน4 ปีที่แล้ว ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันยังใหม่กับการทำงานกับ Windows Services แม้ว่าฉันจะเรียนรู้การสร้างWindows Services ใน VS2010ฉันต้องการทราบวิธีการปฏิบัติที่สามารถใช้บริการ windows ได้บ้าง? ฉันลองใช้ Googling โดยคำนึงถึงบริบทปัจจุบันเท่านั้นเพื่อหาบทช่วยสอนเพิ่มเติมเกี่ยวกับวิธีสร้างบริการ Windows แก้ไขเมื่อได้รับเงินรางวัล: คำตอบทั้งหมดนั้นยอดเยี่ยม แต่ฉันกำลังมองหาตัวอย่างที่เป็นประโยชน์มากขึ้นเกี่ยวกับบริการ windows และความหมายของมัน สิ่งนี้จะช่วยให้นักพัฒนาทราบเมื่อเหมาะสมที่จะใช้กับกรณีศึกษา

1
มาตรฐาน / แนวทางการตั้งชื่อคลาส c #
ในช่วงหลายปีที่ผ่านมาฉันใช้การตั้งชื่อแบบต่างๆสำหรับบริการในแอปพลิเคชันของฉัน ตัวอย่างเช่น: [ClassName] บริการ [ClassName] ผู้จัดการ [ClassName] โรงงาน [ClassName] ผู้ให้บริการ [ClassName] Helper ฉันมักจะใช้คำต่อท้าย "ผู้ช่วย" สำหรับคลาสยูทิลิตี้ที่ไม่มีการอ้างอิงภายนอก อย่างไรก็ตามฉันพบว่ามีการข้ามไปมาระหว่างผู้อื่นและสงสัยว่ามีคำแนะนำ / มาตรฐาน / แนวทางเกี่ยวกับสิ่งที่จะใช้และเมื่อใด
18 c#  naming 

13
คุณลักษณะ C # หรือ. Net เพื่อตัดออกโดยไม่จำเป็นต้องใช้ความเข้ากันได้แบบย้อนหลังได้หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ผลิตภัณฑ์หรือกรอบงานใด ๆ วิวัฒนาการ โดยหลักแล้วมันจะทำเพื่อให้ทันกับความต้องการของผู้ใช้และใช้ประโยชน์จากพลังการประมวลผลใหม่และทำให้ดีขึ้น บางครั้งเป้าหมายการออกแบบหลักก็เปลี่ยนแปลงกับผลิตภัณฑ์ C # หรือ. net framework จะไม่มีข้อยกเว้น อย่างที่เราเห็นรุ่นปัจจุบันของรุ่นที่ 4 แตกต่างกันมากเมื่อเทียบกับรุ่นแรก แต่สิ่งที่มาเป็นสิ่งกีดขวางต่อความเข้ากันได้ของวิวัฒนาการนี้ ในส่วนใหญ่ของเฟรมเวิร์ก / ผลิตภัณฑ์มีคุณสมบัติที่จะถูกตัดออกหากไม่จำเป็นต้องรองรับความเข้ากันได้ย้อนหลัง คุณสมบัติเหล่านี้ใน C # /. net คืออะไร กรุณาพูดถึงหนึ่งคุณสมบัติต่อคำตอบ

5
คุณจะทำอย่างไรเมื่อลูกค้าต้องการแก้ไข Rich Text บนเว็บไซต์ของพวกเขา
ดังที่เราทุกคนรู้แล้วว่าการโจมตี XSS นั้นอันตรายและง่ายต่อการดึงออกมา กรอบงานที่หลากหลายทำให้ง่ายต่อการเข้ารหัส HTML เช่นเดียวกับ ASP.NET MVC <%= Html.Encode("string"); %> แต่จะเกิดอะไรขึ้นเมื่อลูกค้าของคุณต้องการให้พวกเขาสามารถอัปโหลดเนื้อหาของพวกเขาได้โดยตรงจากเอกสาร Microsoft Word นี่คือสถานการณ์: ผู้คนสามารถคัดลอกและวางเนื้อหาจาก Microsoft word ลงในโปรแกรมแก้ไขแบบ WYSIWYG (ในกรณีนี้คือtinyMCE ) จากนั้นข้อมูลจะถูกโพสต์ไปยังหน้าเว็บ เว็บไซต์เป็นสาธารณะ แต่เฉพาะสมาชิกขององค์กรนั้นเท่านั้นที่สามารถเข้าถึงโพสต์ข้อมูลไปยังหน้าเว็บได้ ฉันจะจัดการกับข้อกำหนดเหล่านี้อย่างปลอดภัยได้อย่างไร ขณะนี้ไม่มีการตรวจสอบสิ่งที่ลูกค้าโพสต์ (เนื่องจากมีเพียงผู้ใช้ที่ 'เชื่อถือได้' เท่านั้นที่สามารถโพสต์ได้) แต่ฉันไม่พอใจโดยเฉพาะอย่างยิ่งและต้องการล็อคมันเพิ่มเติมในกรณีที่บัญชีถูกแฮ็ค วิธีการทางความคิดเพียงอย่างเดียวที่ฉันรู้ว่าตรงตามข้อกำหนดเหล่านี้คือการอนุญาตแท็ก HTML และอนุญาตให้ผ่านได้ มีวิธีอื่นอีกไหม? หากไม่เป็นวิธีที่ปลอดภัยในการปล่อยให้ผู้ใช้เก็บข้อมูลลงในฐานข้อมูลในรูปแบบใด แต่แสดงเฉพาะการเข้ารหัสที่ถูกต้องและแยกแท็กที่ไม่ถูกต้อง คำถามที่เกี่ยวข้อง การป้องกัน Cross Script Scripting (XSS)
18 c#  .net  asp.net-mvc 

20
VB.Net กับการอภิปราย C # [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันอยู่ในสถานที่ทำงานซึ่งเป็นจุดเริ่มต้นของโครงการคำถามที่ว่า "เราควรใช้ VB.Net หรือ C #" ได้รับการหยิบยกขึ้นมา จริงอยู่ที่ว่ามันเป็นเรื่องธรรมดาที่จะต้องตัดสินใจน้อยกว่าในตอนแรกของ. Net โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงแนวโน้มของการบรรจบกันของภาษา ดังนั้นระหว่าง VB.Net และ C # คุณชอบภาษาใดและทำไม
18 c#  .net  vb.net 

1
การทดสอบหน่วย: การยืนยันที่ถูกเลื่อนออกไปด้วย Linq
ตกลงหรือไม่ที่จะเพิ่มการยืนยันที่ถูกเลื่อนออกไปเช่นนี้ var actualKittens = actualKittens.Select(kitten => { Assert.IsСute(kitten); return kitten }); ทำไม? ดังนั้นฉันสามารถทำซ้ำได้เพียงครั้งเดียวแม้จะมีข้อความที่คาดว่าจะเกิดการรวบรวมที่เป็นรูปธรรมเช่น: CollectionAssert.AreEquivalent(expectedKittens, actualKittens.ToList()); และมันอาจจะไม่ใช่แค่เลือก แต่เป็นวิธีที่กำหนดตัววนซ้ำและมีการตรวจสอบและตรรกะจำนวนมาก (เช่นการนับและการกรอง) สิ่งที่สงสัยคือความซับซ้อนของการอ่านและการดีบักรหัสดังกล่าวในกรณีที่การทดสอบล้มเหลว


2
คุณแยกมุมมองออกจากตรรกะในแอปพลิเคชัน Winform อย่างไร
ฉันรู้ว่ามีรูปแบบเช่น MVC เพื่อแยกมุมมองจากตรรกะ แต่ฉันไม่ทราบว่าเป็นเรื่องธรรมดาเพียงใดในแอปพลิเคชัน Winform สำหรับแอปพลิเคชัน C # Winform ฉันอาจเริ่มต้นด้วยFormและค่อยๆเพิ่มส่วนประกอบ UI ลงไปจากนั้นสำหรับกิจกรรมของส่วนประกอบ ( click, textchanged... ) ฉันเรียกฟังก์ชั่นของฉันหรือเขียนตรรกะของฉันตรงนั้น! ฉันรู้ว่าเป็นนิสัยที่ไม่ดี แต่ฉันไม่ทราบว่าวิธีที่ดีที่สุดในการเริ่มต้นโครงการใน Visual Studio (แม่แบบกรอบงานจุดเริ่มต้น) MVC เป็นทางออกเดียวหรือไม่ ฉันควรทำเพื่อโครงการใด ๆ ! ฉันต้องการรับแนวทางหรือเฟรมเวิร์กขนาดเล็กเพื่อเริ่มต้นใช้งาน
18 c#  mvc  winforms 

6
ผู้เขียนหมายถึงอะไรโดยการส่งอินเทอร์เฟซอ้างอิงไปยังการใช้งานใด ๆ
ผมอยู่ในขั้นตอนของการพยายามที่จะโท C # ดังนั้นฉันอ่านรหัสผ่าน Adaptive C #โดยแกรี่แมคลีนฮอลล์ เขาเขียนเกี่ยวกับรูปแบบและรูปแบบการต่อต้าน ในการใช้งานกับส่วนต่อประสานเขาเขียนต่อไปนี้: นักพัฒนาที่ยังใหม่กับแนวคิดของการเขียนโปรแกรมไปยังอินเทอร์เฟซมักมีปัญหาในการปล่อยสิ่งที่อยู่เบื้องหลังอินเทอร์เฟซ ณ เวลารวบรวมไคลเอนต์ของอินเทอร์เฟซใด ๆ ควรมีความคิดที่ไม่มีการใช้งานของอินเทอร์เฟซที่ใช้ ความรู้ดังกล่าวสามารถนำไปสู่ข้อสันนิษฐานที่ไม่ถูกต้องซึ่งทำให้คู่ลูกค้าใช้งานอินเทอร์เฟซเฉพาะ ลองนึกภาพตัวอย่างทั่วไปที่คลาสต้องการบันทึกเรกคอร์ดในที่เก็บข้อมูลถาวร ในการทำเช่นนั้นจะมอบสิทธิ์อย่างถูกต้องให้กับส่วนต่อประสานซึ่งซ่อนรายละเอียดของกลไกการจัดเก็บข้อมูลถาวรที่ใช้ อย่างไรก็ตามมันจะไม่ถูกต้องที่จะตั้งสมมติฐานใด ๆ เกี่ยวกับการใช้งานของอินเตอร์เฟซที่ถูกใช้ในเวลาทำงาน ยกตัวอย่างเช่นการหล่ออ้างอิงอินเตอร์เฟซในการดำเนินการใด ๆ ที่เป็นเสมอความคิดที่ดี อาจเป็นกำแพงภาษาหรือการขาดประสบการณ์ของฉัน แต่ฉันไม่เข้าใจความหมาย นี่คือสิ่งที่ฉันเข้าใจ: ฉันมีโครงการสนุก ๆ เพื่อฝึก C # ที่นั่นฉันมีชั้นเรียน: public class SomeClass... คลาสนี้ถูกใช้ในหลายสถานที่ ในขณะที่เรียนรู้ C # ฉันอ่านว่ามันเป็นนามธรรมที่ดีกว่าด้วยส่วนต่อประสานดังนั้นฉันจึงทำสิ่งต่อไปนี้ public interface ISomeClass <- Here I made a "contract" of …

3
การเรียกใช้บริการ async หลายตัวพร้อมกัน
ฉันมีบริการ async REST ไม่กี่รายการซึ่งไม่ได้ขึ้นอยู่กับกันและกัน นั่นคือในขณะที่ "รอ" คำตอบจาก Service1 ฉันสามารถโทร Service2, Service3 และอื่น ๆ ตัวอย่างเช่นอ้างถึงรหัสด้านล่าง: var service1Response = await HttpService1Async(); var service2Response = await HttpService2Async(); // Use service1Response and service2Response ตอนนี้service2Responseไม่ได้ขึ้นอยู่กับservice1Responseพวกเขาและสามารถดึงข้อมูลได้อย่างอิสระ ดังนั้นฉันไม่จำเป็นต้องรอการตอบรับจากบริการแรกเพื่อเรียกบริการที่สอง ฉันไม่คิดว่าฉันสามารถใช้Parallel.ForEachที่นี่ได้เนื่องจากไม่ใช่การทำงานของ CPU bound ในการเรียกการดำเนินการสองอย่างนี้แบบขนานฉันสามารถใช้งานได้Task.WhenAllไหม ปัญหาหนึ่งที่ฉันเห็นการใช้Task.WhenAllคือมันไม่ส่งคืนผลลัพธ์ ในการรับผลลัพธ์ฉันสามารถโทรtask.ResultหลังจากโทรTask.WhenAllได้เนื่องจากงานทั้งหมดเสร็จสมบูรณ์แล้วและสิ่งที่ฉันต้องใช้ในการตอบกลับคืออะไร? รหัสตัวอย่าง: var task1 = HttpService1Async(); var task2 = HttpService2Async(); await Task.WhenAll(task1, task2) var …

4
ฉันจะเก็บข้อมูลแบบอ่านอย่างเดียวเพื่อปรับใช้กับแอปพลิเคชันของฉันได้อย่างไร
ฉันกำลังพัฒนาแอปพลิเคชันบนเดสก์ท็อปและแอปพลิเคชันนี้ต้องการข้อมูลบางอย่างที่จะเรียกใช้ แต่ไม่เปลี่ยนแปลงข้อมูลใด ๆ (ข้อมูลจะต้องโหลดทุกครั้งที่เรียกใช้แอป แต่ไม่มีการเปลี่ยนแปลงข้อมูล) ข้อมูลจะต้องเก็บไว้ในคอมพิวเตอร์เครื่องเดียวกับที่แอพกำลังทำงานอยู่ (ที่เก็บข้อมูลฝั่งไคลเอ็นต์หรือไม่) นอกจากนี้ยังเป็นการดีกว่าหากผู้ใช้ไม่สามารถเปลี่ยนข้อมูลนี้ได้อย่างง่ายดาย (สมมติว่าพวกเขาไม่มีความรู้ด้านไอทีมาก) ฉันจะเก็บข้อมูลประเภทนี้ได้อย่างไร ฐานข้อมูลท้องถิ่น XML ที่ส่งมาพร้อมกับแอปพลิเคชันหรือไม่ ฉันใช้ WPF
17 c#  design  data  wpf 

7
เหตุใดการสร้างอินสแตนซ์จึงเป็นแบบนี้
ฉันได้เรียนรู้ C # ในช่วงหกเดือนที่ผ่านมาและตอนนี้ฉันกำลังขุดหา Java คำถามของฉันเกี่ยวกับการสร้างอินสแตนซ์ (ในทั้งสองภาษาจริง ๆ ) และมีมากกว่า: ฉันสงสัยว่าทำไมพวกเขาถึงทำแบบนั้น นำตัวอย่างนี้ Person Bob = new Person(); มีเหตุผลที่ระบุวัตถุสองครั้งหรือไม่ เคยมีsomething_else Bob = new Person()บ้างไหม? ดูเหมือนว่าถ้าฉันทำตามจากการประชุมมันจะเป็นเหมือน: int XIsAnInt; Person BobIsAPerson; หรืออาจเป็นหนึ่งในสิ่งเหล่านี้: Person() Bob; new Person Bob; new Person() Bob; Bob = new Person(); ฉันคิดว่าฉันอยากรู้ว่าถ้ามีคำตอบที่ดีกว่า "นั่นเป็นเพียงวิธีที่มันทำ"

5
การจัดเก็บข้อมูลในรหัส
ในอดีตของฉันสองสามครั้งฉันต้องการเก็บข้อมูลในรหัส นี่จะเป็นข้อมูลที่ไม่ค่อยมีการเปลี่ยนแปลงและถูกนำไปใช้ในสถานที่ที่ไม่สามารถเข้าถึงฐานข้อมูลได้ในทางปฏิบัติหรือเป็นที่ต้องการ ตัวอย่างเล็ก ๆ จะเก็บรายชื่อประเทศ เพื่อที่คุณสามารถทำสิ่งที่ชอบ: public class Country { public string Code { get; set; } public string EnglishName {get;set;} } public static class CountryHelper { public static List<Country> Countries = new List<Country> { new Country {Code = "AU", EnglishName = "Australia"}, ... new Country {Code = "SE", EnglishName …
17 c# 

9
โครงสร้างข้อมูลสำหรับการเข้าถึงหน่วยวัด
TL; DR - ฉันพยายามออกแบบโครงสร้างข้อมูลที่ดีที่สุดเพื่อกำหนดหน่วยภายในหน่วยการวัด Unit of measureเป็นหลักvalue(หรือปริมาณ) unitที่เกี่ยวข้องกับ หน่วย SIมีเจ็ดฐานหรือขนาด กล่าวคือความยาวมวลเวลากระแสไฟฟ้าอุณหภูมิปริมาณสาร (โมล) และความเข้มการส่องสว่าง สิ่งนี้จะตรงไปตรงมามากพอ แต่มีหน่วยที่ได้รับมาจำนวนมากรวมทั้งอัตราที่เราใช้บ่อย ตัวอย่างรวมหน่วยจะเป็นนิวตัน: และอัตราตัวอย่างจะเป็นkg * m / s^2tons / hr เรามีแอปพลิเคชั่นที่ต้องอาศัยหน่วยงานโดยนัย เราจะฝังหน่วยภายในชื่อตัวแปรหรือคอลัมน์ แต่สิ่งนี้จะสร้างปัญหาเมื่อเราจำเป็นต้องระบุหน่วยการวัดด้วยหน่วยที่แตกต่างกัน ใช่เราสามารถแปลงค่าที่อินพุทและจอแสดงผล แต่สิ่งนี้จะสร้างรหัสค่าใช้จ่ายจำนวนมากที่เราต้องการห่อหุ้มในคลาสของตัวเอง มีโซลูชั่นจำนวนมากเกี่ยวกับ codeplex และสภาพแวดล้อมการทำงานร่วมกันอื่น ๆ การอนุญาตให้ใช้สิทธิ์สำหรับโครงการนั้นเป็นที่ยอมรับ แต่โดยทั่วไปแล้วโครงการมักจะมีน้ำหนักเบาหรือหนักเกินไป เรากำลังไล่ตามยูนิคอร์นของเรา "ถูกต้อง" เป็นการดีที่ฉันสามารถกำหนดหน่วยวัดใหม่โดยใช้สิ่งนี้: UOM myUom1 = UOM ใหม่ (10, โวลต์); UOM myUom2 = UOM ใหม่ (43.2, …

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