การใช้คำสำคัญ“ การใช้” ในอินเตอร์เฟซ C #


16

เมื่อฉันใช้ C # เพื่อเขียนโค้ดบางส่วนและฉันกำหนดอินเทอร์เฟซโดยใช้ Visual Studio 2010 จะมีคำสั่ง "ใช้" จำนวนมาก (ดังแสดงในตัวอย่าง)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestEngine.TestNameSpace
{
    interface ITest1
    {
        bool testMethod(int xyz);
    }
} 

ฉันสงสัยว่าสิ่งเหล่านี้มีไว้เพื่ออะไรและหากจำเป็นจริงๆ ฉันจะออกไปได้ไหม? จำเป็นหรือไม่เมื่อฉันใช้ส่วนเหล่านั้นในคำอธิบายส่วนต่อประสานของฉัน


ขอบคุณสำหรับการแก้ไข ฉันแค่คิดออกเอง อย่างใดโดยใช้งบที่ถูกปล่อยออกมาแม้ว่าฉันได้เลือกพวกเขาในการป้องกันรหัส :)
ออนโน่

2
นอกจากนี้อ่านstackoverflow.com/a/151560/240613 : ในรหัสของคุณการใช้อยู่ผิดที่
Arseni Mourzenko

1
ขอบคุณสำหรับลิงก์มันเป็นส่วนเสริมที่ยอดเยี่ยม หลังจากคำตอบโดย @Akshat Jiwan Sharma เป็นที่ชัดเจนว่าเป็นกรณีนี้ แต่ในขณะเดียวกันคำถามที่เกี่ยวข้องกับเทมเพลต / การตั้งค่าเริ่มต้นที่ MS ให้ไว้เมื่อคุณติดตั้ง VS2010
Onno

1
@MainMa - นี่คือที่ Visual Studio ใส่usingsในเทมเพลตเริ่มต้นดังนั้นเว้นแต่ Microsoft จะอัปเดตสิ่งเหล่านั้นในไม่ช้าคำถามนี้จะถูกต้อง
ChrisF

1
@ กลาง: จริง แต่ฉันคิดว่ามันชัดเจนว่าสิ่งที่ถูกถามเมื่ออ่านคำถามตัวเอง รู้สึกอิสระที่จะแก้ไขชื่อหากคุณสามารถคิดที่ดีขึ้น
Onno

คำตอบ:


49

Visual Studio ไม่ทราบว่าคุณต้องการเขียนโค้ดใดรวมถึงเนมสเปซที่พบบ่อยที่สุดสำหรับคุณโดยค่าเริ่มต้นในเทมเพลต "คลาสใหม่" สิ่งนี้จะทำเพื่อให้คุณไม่ต้องแก้ไขการอ้างอิงทั้งหมดสำหรับทุกบรรทัดของรหัสใหม่ที่คุณเขียน

เมื่อคุณเขียนโค้ดพื้นฐานของคุณแล้วหากคุณคลิกขวาและเลือกจัดระเบียบการใช้งาน> ลบและจัดเรียงมันจะลบสิ่งที่ไม่ได้ใช้


2
นอกจากนี้หากคุณลบบรรทัดที่ "ใช้" โดยไม่ได้ตั้งใจคุณสามารถเพิ่มพวกเขากลับไปโดยไปที่ชื่อชั้นที่ตอนนี้ไม่สามารถหาได้และคลิกขวา -> แก้ไข -> ใช้ ...
Mr Lister

10
@MrLister: หากคุณยังไม่รู้: กด "ctrl +." (ช่วงเวลาควบคุม) เมื่อเคอร์เซอร์อยู่ที่ประเภทหรือคลาสที่ไม่ได้รับการแก้ไขใด ๆ และคุณจะได้รับเอฟเฟกต์เดียวกันโดยไม่ต้องแตะเมาส์
Steven Evers

3
เช่นเดียวกับการเพิ่มคำตอบ: "การใช้" ที่ไม่ได้ใช้จะไม่ส่งผลกระทบต่อการทำงานของรหัสของคุณเนื่องจากจะมีการโหลดเฉพาะการใช้ "การใช้งาน" เท่านั้น อย่างไรก็ตามมันสามารถส่งผลกระทบต่อ IDE และความเร็วในการคอมไพล์: stackoverflow.com/questions/136278/…
Holger

เนื่องจากนี่เป็นคำตอบที่ได้รับการยอมรับฉันต้องการพูดถึงว่า StyleCop จะบ่นเกี่ยวกับการอ้างอิงที่ไม่ถูกต้องและยังสามารถแก้ไขเทมเพลตสำหรับคลาสใหม่และอินเทอร์เฟซใหม่ ฯลฯ
งาน

5

ใช่คุณสามารถลบคำสั่งที่ไม่ได้ใช้คำสั่งเหล่านี้จะถูกเพิ่มโดยอัตโนมัติโดย visual studio เพราะพวกเขาเป็นคนที่ใช้กันมากที่สุดและถ้าเช่นคุณจะไม่ใช้ linq ในอินเทอร์เฟซคุณสามารถลบคำสั่งได้

 System.Linq;

เช่นเดียวกันถือเป็นจริงสำหรับคำสั่งอื่น ๆ เช่นกันมันเป็นแนวปฏิบัติที่ดีในความคิดของฉันที่จะย้ายคำสั่งการใช้งานภายใน namespaces


มีความสุขที่ได้ช่วยเหลือคำถามที่คุณถามทำให้ฉันงุนงงมานานเกินไป :)
Akshat Jiwan Sharma

หนึ่งสามารถแก้ไขไฟล์เทมเพลตและปรับซึ่งใช้คำสั่งที่ได้รับการรวมและที่ - พวกเขาควรจะเข้าไปใน namespace โดยค่าเริ่มต้นมิฉะนั้น StyleCop จะบ่นและยิ่งแย่ลง - เลวร้ายสามารถเกิดขึ้นได้
งาน

3

usingข้อความเริ่มต้นเหล่านี้เป็นส่วนหนึ่งของแม่แบบเริ่มต้นของคุณเมื่อสร้างอินเทอร์เฟซ คุณสามารถแก้ไขเทมเพลตเพื่อลบออกได้ ดูคำถามนี้สำหรับรายละเอียดเพิ่มเติม


แต่พวกเขาจำเป็นจริง ๆ มีเหตุผลที่ดีสำหรับพวกเขาที่จะอยู่ในแม่แบบหรือไม่?
Onno

หากคุณไม่ต้องการให้ลบออกง่ายๆ เป็นค่าเริ่มต้นเท่านั้น
เบอร์นาร์ด

พวกเขาจำเป็นเฉพาะถ้าวิธีการอินเทอร์เฟซของคุณอย่างใดอย่างหนึ่งเป็นชนิดส่งคืนอยู่ในหนึ่ง คุณต้องการระบบอย่างน้อยที่สุดและระบบอื่น ๆ เท่าที่จำเป็นสำหรับประเภทที่คุณต้องการส่งคืน
เกรแฮม

จริงๆแล้วหลายคลาสไม่ต้องการระบบ แต่ทั้งหมดนั้นทำให้ชีวิตนักพัฒนาส่วนใหญ่ง่ายขึ้นโดยเฉพาะผู้ที่ไม่คุ้นเคยกับ. NET และไม่รู้จักที่จะรับคลาสระบบหลัก
ไวแอตต์บาร์เน็ตต์

0

ในระยะสั้นที่พวกเขาจะเรียกว่าnamespaces Namespaces ยังใช้เพื่ออ้างอิงบางคลาสไลบรารีภายในโค้ดของคุณ นอกจากนี้ยังมีแนวทางที่แนะนำเกี่ยวกับวิธีการใช้เนมสเปซใน. NET

ในกรณีส่วนใหญ่คุณสามารถลบออกได้ง่ายหากไม่ได้ใช้ เนมสเปซสองรายการต่อไปนี้เป็นตัวเลือกที่เป็นไปได้ที่จะถูกลบออก

using System.Collections.Generic;
using System.Linq;

Visual Studio จะบ่นและไม่คอมไพล์รหัสเมื่อคลาสเฟรมเวิร์ก / ไลบรารีถูกใช้โดยไม่ต้องประกาศเนมสเปซ ดังนั้นการเล่นเนมสเปซของการจัดโครงสร้างโค้ดของคุณรวมถึงการผ่อนคลายการอ้างอิงระหว่างคลาสโปรเจ็กต์อินเตอร์เฟสการสร้าง ฯลฯ


-1

ใช้ใน C # ใช้หลายวิธี .. เป็นคำหลักที่ใช้หมายถึงการใช้ .. ในการเริ่มต้นเมื่อเราใช้ใช้ระบบ นั่นหมายความว่ามี DLL ของระบบชื่อที่ทุกฟังก์ชั่นหลักจะถูกเก็บไว้และเราใช้มันเพื่อย่อรหัสของเรา ...

system.WriteLine("Andy");

แต่เมื่อเราใช้ระบบด้านบนเราก็สามารถเขียนมันได้

WriteLine("Andy");

มากขึ้นใน SQLserver เมื่อเราใช้การเชื่อมต่อมันหมายถึงหลังจากที่เราใช้ข้อมูลจากฐานข้อมูลโดยใช้การเชื่อมต่อคำสั่งจะปิดตัวเอง มันมีประโยชน์มากสำหรับ coder ที่ต้องการประหยัดเวลา


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