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

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

4
วิธีเข้ารหัสไบต์โดยใช้ TPM (Trusted Platform Module)
ฉันจะเข้ารหัสไบต์โดยใช้โมดูล TPM ของเครื่องได้อย่างไร CryptProtectData Windows มี API ที่เรียบง่าย (ค่อนข้าง) เพื่อเข้ารหัส blob โดยใช้CryptProtectDataAPI ซึ่งเราสามารถรวมฟังก์ชันที่ใช้งานง่าย: public Byte[] ProtectBytes(Byte[] plaintext) { //... } รายละเอียดProtectBytesมีความสำคัญน้อยกว่าแนวคิดที่คุณสามารถใช้ได้อย่างง่ายดาย: นี่คือไบต์ที่ฉันต้องการเข้ารหัสโดยคีย์ลับที่อยู่ในไฟล์ System คืนหยดที่เข้ารหัสให้ฉัน หยดที่ส่งคืนเป็นโครงสร้างเอกสารที่ไม่มีเอกสารซึ่งมีทุกอย่างที่จำเป็นในการถอดรหัสและส่งคืนข้อมูลต้นฉบับ (อัลกอริทึมแฮชอัลกอริทึมการเข้ารหัสเกลือลายเซ็น HMAC ฯลฯ ) เพื่อความสมบูรณ์นี่คือตัวอย่างการใช้งานรหัสเทียมProtectBytesที่ใช้Crypt APIเพื่อป้องกันไบต์: public Byte[] ProtectBytes(Byte[] plaintext) { //Setup our n-byte plaintext blob DATA_BLOB dataIn; dataIn.cbData = plaintext.Length; dataIn.pbData = Addr(plaintext[0]); DATA_BLOB …


8
รายการที่ส่งผ่านโดย ref - ช่วยฉันอธิบายพฤติกรรมนี้
ดูโปรแกรมต่อไปนี้: class Test { List<int> myList = new List<int>(); public void TestMethod() { myList.Add(100); myList.Add(50); myList.Add(10); ChangeList(myList); foreach (int i in myList) { Console.WriteLine(i); } } private void ChangeList(List<int> myList) { myList.Sort(); List<int> myList2 = new List<int>(); myList2.Add(3); myList2.Add(4); myList = myList2; } } ฉันคิดว่าmyListน่าจะผ่านไปrefแล้วและผลลัพธ์ก็จะ 3 4 รายการนี้ "ส่งผ่านโดย ref" …

5
ฉันจะเริ่มโปรแกรมด้วยอาร์กิวเมนต์เมื่อทำการดีบักได้อย่างไร
ฉันต้องการดีบักโปรแกรมใน Visual Studio 2008 ปัญหาคือจะออกหากไม่ได้รับอาร์กิวเมนต์ นี่มาจากวิธีการหลัก: if (args == null || args.Length != 2 || args[0].ToUpper().Trim() != "RM") { Console.WriteLine("RM must be executed by the RSM."); Console.WriteLine("Press any key to exit program..."); Console.Read(); Environment.Exit(-1); } ฉันไม่ต้องการแสดงความคิดเห็นแล้วกลับเข้ามาใหม่เมื่อรวบรวม ฉันจะเริ่มโปรแกรมด้วยอาร์กิวเมนต์เมื่อทำการดีบักได้อย่างไร? ตั้งค่าเป็นโครงการเริ่มต้น

2
ที่อยู่ IP ':: 1' คืออะไร?
ฉันกำลังเล่นกับซ็อกเก็ตบนเครื่องท้องถิ่นโดยไม่มีการเชื่อมต่อเครือข่าย ดูด้านล่าง: IPAddress address = IPAddress.Any; // doesn't work IPAddress address = IPAddress.Parse("::1"); // works ที่อยู่::1IP คืออะไร? เป็นที่อยู่ IP เริ่มต้นที่มีอยู่หรือเป็นที่อยู่ย้อนกลับ? จะเกิดอะไรขึ้นกับรหัสด้านบน (สายการทำงาน) บนเครื่องที่มีที่อยู่ IP เฉพาะและการเชื่อมต่อเครือข่าย แก้ไข: รหัสที่แน่นอนถูกใช้เพื่อผูกที่อยู่ IP เฉพาะกับซ็อกเก็ต นี่คือ: ServicePoint sp = ServicePointManager.FindServicePoint(uri); sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind); // here's the bind delegate: private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int …
110 c#  ip  system.net 

8
วิธีต่างๆในการเพิ่มลงในพจนานุกรม
อะไรคือความแตกต่างในDictionary.add(key, value)และDictionary[key] = value? ฉันสังเกตเห็นว่าเวอร์ชันล่าสุดไม่โยนArgumentExceptionเมื่อใส่คีย์ที่ซ้ำกัน แต่มีเหตุผลใดที่จะชอบเวอร์ชันแรก? แก้ไข : ใครมีแหล่งข้อมูลที่เชื่อถือได้เกี่ยวกับเรื่องนี้หรือไม่? ฉันได้ลอง MSDN แล้ว แต่มันก็เหมือนกับการไล่ล่าห่านป่า :(

2
สร้าง GUID โดยไม่มียัติภังค์
ฉันกำลังสร้าง GUID โดยใช้คำสั่งต่อไปนี้ในรหัสของฉัน byte[ ] keyBytes = Encoding.UTF8.GetBytes( Guid.NewGuid( ).ToString( ).Substring( 0, 12 ) ); แต่เมื่อสร้าง GUID ฉันพบว่ามีอักขระยัติภังค์ด้วย ฉันจะสร้าง GUID ที่มีเฉพาะตัวอักษร (ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) และตัวเลขได้อย่างไร ฉันไม่ต้องการยัติภังค์ ใครช่วยให้ความคิดฉัน
110 c#  winforms 

5
สร้างฐานข้อมูลอัตโนมัติใน Entity Framework Core
แอปพลิเคชันของฉันที่ถูกย้ายไปยัง. NET core จะใช้ EF Core ใหม่กับ SQLite ฉันต้องการสร้างฐานข้อมูลและโครงสร้างตารางโดยอัตโนมัติเมื่อมีการเรียกใช้แอปครั้งแรก ตามเอกสารหลักของ EF สิ่งนี้ทำได้โดยใช้คำสั่งด้วยตนเอง dotnet ef migrations add MyFirstMigration dotnet ef database update อย่างไรก็ตามฉันไม่ต้องการให้ผู้ใช้ป้อนคำสั่งเหล่านี้และต้องการให้แอปสร้างและตั้งค่าฐานข้อมูลสำหรับการใช้งานครั้งแรก สำหรับ EF 6 มีฟังก์ชันเช่น Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>()); แต่ใน EF Core สิ่งเหล่านี้ดูเหมือนจะไม่มีอยู่จริง ฉันไม่พบตัวอย่างหรือเอกสารใด ๆ เกี่ยวกับสิ่งที่เทียบเท่าสำหรับแกน EF และไม่มีการกล่าวถึงในรายการคุณสมบัติที่ขาดหายไปในเอกสารหลักของ EF ฉันมีการตั้งค่าคลาสโมเดลอยู่แล้วดังนั้นฉันจึงสามารถเขียนโค้ดเพื่อเริ่มต้นฐานข้อมูลตามโมเดลได้ แต่จะง่ายกว่าถ้าเฟรมเวิร์กทำสิ่งนี้โดยอัตโนมัติ ฉันไม่ต้องการสร้างโมเดลหรือย้ายข้อมูลโดยอัตโนมัติเพียงแค่สร้างโครงสร้างตารางในฐานข้อมูลใหม่ ฉันพลาดอะไรบางอย่างที่นี่หรือฟังก์ชันสร้างตารางอัตโนมัติหายไปในแกน EF หรือไม่

10
วิธีรับค่า enum ด้วยสตริงหรือ int
ฉันจะรับค่า enum ได้อย่างไรถ้าฉันมีสตริง enum หรือค่า int enum เช่น: ถ้าฉันมี enum ดังนี้: public enum TestEnum { Value1 = 1, Value2 = 2, Value3 = 3 } และในตัวแปรสตริงฉันมีค่า "value1" ดังนี้: string str = "Value1" หรือในตัวแปร int บางตัวฉันมีค่า 2 เช่น int a = 2; ฉันจะรับตัวอย่างของ enum ได้อย่างไร ฉันต้องการวิธีการทั่วไปที่ฉันสามารถระบุ enum และสตริงอินพุตหรือค่า int ของฉันเพื่อรับอินสแตนซ์ enum
110 c#  enums 

8
ข้ามใบรับรอง SSL ที่ไม่ถูกต้องใน. net core
ฉันกำลังทำโปรเจ็กต์ที่ต้องเชื่อมต่อกับไซต์ https ทุกครั้งที่เชื่อมต่อรหัสของฉันจะแสดงข้อยกเว้นเนื่องจากใบรับรองของไซต์นั้นมาจากไซต์ที่ไม่น่าเชื่อถือ มีวิธีเลี่ยงการตรวจสอบใบรับรองใน. net core http หรือไม่? ฉันเห็นรหัสนี้จาก. NET เวอร์ชันก่อนหน้า ฉันเดาว่าฉันต้องการอะไรแบบนี้ ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

24
คุณจะปรับขนาดคอลัมน์โดยอัตโนมัติในตัวควบคุม DataGridView ได้อย่างไรและอนุญาตให้ผู้ใช้ปรับขนาดคอลัมน์บนกริดเดียวกันได้อย่างไร
ฉันกำลังเติมตัวควบคุม DataGridView บนฟอร์ม Windows (C # 2.0 ไม่ใช่ WPF) เป้าหมายของฉันคือการแสดงเส้นตารางที่เติมความกว้างที่มีอยู่ทั้งหมดด้วยเซลล์อย่างเรียบร้อยนั่นคือไม่มีพื้นที่ที่ไม่ได้ใช้ (สีเทาเข้ม) ลงทางด้านขวาและปรับขนาดแต่ละคอลัมน์ให้เหมาะสมตามข้อมูลที่มีแต่ยังช่วยให้ผู้ใช้สามารถปรับขนาดคอลัมน์ใดก็ได้ ตามความชอบของพวกเขา ฉันพยายามที่จะบรรลุสิ่งนี้โดยตั้งค่า AutoSizeMode ของแต่ละคอลัมน์เป็นDataGridViewAutoSizeColumnMode AllCellsยกเว้นคอลัมน์ใดคอลัมน์หนึ่งที่ฉันตั้งค่าเป็นDataGridViewAutoSizeColumnModeกรอกข้อมูลเพื่อให้แน่ใจว่าพื้นที่ทั้งหมดของกริดเต็มไปด้วยข้อมูลอย่างเรียบร้อย (ฉันไม่ทราบว่าเมื่อผู้ใช้พยายามปรับขนาดคอลัมน์นี้คอลัมน์นี้จะกลับมาเป็นขนาดที่ทำให้แน่ใจว่ามีการใช้พื้นที่แนวนอนเสมอ) อย่างไรก็ตามดังที่ได้กล่าวไปแล้วเมื่อโหลดแล้วฉันต้องการอนุญาตให้ผู้ใช้ปรับขนาดคอลัมน์ให้เหมาะกับความต้องการของตนเอง - ในการตั้งค่า AutoSizeMode เหล่านี้สำหรับแต่ละคอลัมน์ดูเหมือนว่าผู้ใช้จะไม่สามารถปรับขนาดคอลัมน์เหล่านั้นได้ ฉันพยายามไม่ตั้งค่า AutoSizeMode ของคอลัมน์ทั้งหมดที่อนุญาตให้ปรับขนาดได้ แต่ไม่ได้กำหนดขนาดเริ่มต้นตามข้อมูลในเซลล์ ผลลัพธ์เดียวกันนี้เกิดขึ้นเมื่อเปลี่ยน AutoSizeMode ของกริดกลับไปเป็น "Not Set" หลังจากโหลดข้อมูล มีการตั้งค่าที่ฉันขาดหายไปที่นี่ซึ่งอนุญาตให้ตั้งค่าความกว้างคอลัมน์เริ่มต้นและการปรับขนาดผู้ใช้โดยอัตโนมัติหรือมีเทคนิคอื่นที่ฉันต้องใช้เมื่อเติมข้อมูลตัวควบคุม DataGridView หรือไม่


21
การหลีกเลี่ยงการฉีด SQL โดยไม่มีพารามิเตอร์
เรากำลังมีการอภิปรายอีกครั้งในที่ทำงานเกี่ยวกับการใช้การสืบค้น sql ที่เป็นพารามิเตอร์ในโค้ดของเรา เรามีสองด้านในการสนทนา: ฉันและคนอื่น ๆ บางคนที่บอกว่าเราควรใช้พารามิเตอร์เพื่อป้องกันการฉีด sql และคนอื่น ๆ ที่ไม่คิดว่าจำเป็น แต่พวกเขาต้องการแทนที่เครื่องหมายวรรคตอนเดี่ยวด้วยเครื่องหมายอะพอสทรอฟีสองตัวในทุกสตริงเพื่อหลีกเลี่ยงการฉีด sql ฐานข้อมูลของเรากำลังรัน Sql Server 2005 หรือ 2008 และฐานรหัสของเราทำงานบน. NET framework 2.0 ขอยกตัวอย่างง่ายๆใน C #: ฉันต้องการให้เราใช้สิ่งนี้: string sql = "SELECT * FROM Users WHERE Name=@name"; SqlCommand getUser = new SqlCommand(sql, connection); getUser.Parameters.AddWithValue("@name", userName); //... blabla - do something here, …

11
การแยกวิเคราะห์ไฟล์ Visual Studio Solution
ฉันจะแยกวิเคราะห์ไฟล์ Visual Studio solution (SLN) ใน. NET ได้อย่างไร ฉันต้องการเขียนแอปที่รวมโซลูชันหลายอย่างเข้าด้วยกันในขณะที่บันทึกลำดับการสร้างสัมพัทธ์

8
ฉันจะกำหนดประเภทของตัวแปรที่ประกาศโดยใช้ var ณ เวลาออกแบบได้อย่างน่าเชื่อถือได้อย่างไร
ฉันกำลังดำเนินการสิ่งอำนวยความสะดวก (Intellisense) สำหรับ C # ใน emacs แนวคิดคือถ้าผู้ใช้พิมพ์แฟรกเมนต์แล้วขอให้ดำเนินการเสร็จสิ้นโดยใช้การกดแป้นพิมพ์ร่วมกันสิ่งอำนวยความสะดวกในการทำให้เสร็จสมบูรณ์จะใช้การสะท้อน. NET เพื่อพิจารณาความสำเร็จที่เป็นไปได้ การทำเช่นนี้ต้องการให้ทราบประเภทของสิ่งที่จะเสร็จสมบูรณ์ หากเป็นสตริงจะมีชุดวิธีการและคุณสมบัติที่เป็นไปได้ ถ้าเป็น Int32 จะมีชุดแยกต่างหากและอื่น ๆ การใช้ความหมายแพคเกจรหัส lexer / parser ที่มีอยู่ใน emacs ฉันสามารถค้นหาการประกาศตัวแปรและประเภทของตัวแปรได้ ด้วยเหตุนี้จึงเป็นเรื่องง่ายที่จะใช้การสะท้อนเพื่อรับวิธีการและคุณสมบัติของประเภทจากนั้นจึงนำเสนอรายการตัวเลือกให้กับผู้ใช้ (โอเคไม่ตรงไปตรงมาที่จะทำภายใน emacs แต่การใช้ความสามารถในการเรียกใช้กระบวนการ powershell ภายใน emacsมันจะง่ายกว่ามากฉันเขียนแอสเซมบลี. NET ที่กำหนดเองเพื่อทำการสะท้อนโหลดลงใน powershell จากนั้น elisp ทำงานภายใน emacs สามารถส่งคำสั่งไปยัง powershell และอ่านการตอบกลับผ่าน comint ดังนั้น emacs จึงได้ผลลัพธ์ของการสะท้อนกลับอย่างรวดเร็ว) ปัญหามาถึงเมื่อรหัสใช้varในการประกาศสิ่งที่เสร็จสมบูรณ์ นั่นหมายความว่าไม่มีการระบุประเภทอย่างชัดเจนและการกรอกข้อมูลจะไม่ทำงาน ฉันจะกำหนดประเภทจริงที่ใช้อย่างน่าเชื่อถือได้อย่างไรเมื่อประกาศตัวแปรด้วยvarคีย์เวิร์ด เพื่อความชัดเจนฉันไม่จำเป็นต้องกำหนดตอนรันไทม์ ฉันต้องการตรวจสอบที่ "เวลาออกแบบ" …

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