หมายเหตุ: คำถามเกี่ยวกับอาร์เรย์ของสตริง ไม่ควรผสมรูทีนที่กล่าวถึงกับเมธอด. ประกอบด้วยของสตริงเดี่ยว
ฉันต้องการเพิ่มคำตอบเพิ่มเติมที่อ้างถึงเวอร์ชัน C # ที่แตกต่างกันและเนื่องจากเหตุผลสองประการ:
คำตอบที่ยอมรับต้องใช้ Linq ซึ่งเป็นสำนวน C # อย่างสมบูรณ์ในขณะที่ไม่ได้มาโดยไม่มีค่าใช้จ่ายและไม่มีใน C # 2.0 หรือต่ำกว่า เมื่ออาร์เรย์มีส่วนเกี่ยวข้องประสิทธิภาพอาจมีความสำคัญดังนั้นจึงมีสถานการณ์ที่คุณต้องการใช้วิธี Array
ไม่มีคำตอบใดที่เกี่ยวข้องโดยตรงกับคำถามที่ถูกขอให้ใส่สิ่งนี้ในฟังก์ชัน (เนื่องจากคำตอบบางคำกำลังผสมสตริงกับอาร์เรย์ของสตริงจึงไม่สำคัญอย่างสมบูรณ์)
Array.Exists () เป็นเมธอด C # /. NET 2.0 และไม่จำเป็นต้องใช้ Linq การค้นหาในอาร์เรย์คือ O (n) สำหรับการเข้าถึงที่รวดเร็วยิ่งขึ้นให้ใช้ HashSet หรือคอลเล็กชันที่คล้ายกัน
เนื่องจาก. NET 3.5 ยังมีวิธีการทั่วไปArray<T>.Exists()
:
public void PrinterSetup(string[] printer)
{
if (Array.Exists(printer, x => x == "jupiter"))
{
Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC");
}
}
คุณสามารถเขียนวิธีการขยายของตัวเอง (C # 3.0 ขึ้นไป) เพื่อเพิ่มน้ำตาลวากยสัมพันธ์เพื่อให้ได้ ".Contains" ที่เหมือนกัน / คล้ายกันสำหรับสตริงสำหรับอาร์เรย์ทั้งหมดโดยไม่รวม Linq:
// Using the generic extension method below as requested.
public void PrinterSetup(string[] printer)
{
if (printer.ArrayContains("jupiter"))
{
Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC");
}
}
public static bool ArrayContains<T>(this T[] thisArray, T searchElement)
{
// If you want this to find "null" values, you could change the code here
return Array.Exists<T>(thisArray, x => x.Equals(searchElement));
}
ในกรณีนี้ArrayContains()
วิธีนี้ใช้ไม่ใช่วิธีการมีของ Linq
อื่น ๆ ที่กล่าวถึงประกอบด้วยวิธีการอ้างถึงList<T>.Contains
(ตั้งแต่ C # 2.0) หรือArrayList.Contains
(ตั้งแต่ C # 1.1) แต่ไม่ใช่เพื่ออาร์เรย์โดยตรง