2011-01-19 5 views
13

Possible Duplicates:
What does the @ symbol before a variable name mean in C#?
What's the use/meaning of the @ character in variable names in C#?विधि घोषणा में पैरामीटर नाम से पहले '@' char का क्या अर्थ है?

हाय,

मैं एक त्वरित सवाल है। विधि घोषणा में पैरामीटर नाम से पहले '@' char का मतलब क्या है? निम्नलिखित की तरह:

protected void Method1(Type1 @arg1, Type2 arg2) 
... 

मैं .NET 3.5 के साथ C# का उपयोग करता हूं।

धन्यवाद।

+1

यह एक भागने चरित्र है कि आप पहचानकर्ता के रूप में आरक्षित शब्द का उपयोग करने की अनुमति देता है ताकि आप इस तरह वाक्य रचना की है। यह सवाल बहुत पूछता है। देखें: http://stackoverflow.com/questions/429529/what-does-the-symbol-before-a-variable-name-mean-in-c –

उत्तर

16

यह आरक्षित शब्दों को पहचानकर्ताओं के रूप में उपयोग करने की अनुमति देता है। यह आमतौर पर कोड जेनरेटर द्वारा उपयोग किया जाता है जो लक्ष्य भाषा की तुलना में अलग-अलग कीवर्ड वाले सिस्टम से स्रोत नामों का उपयोग कर सकता है। टेबल नाम और स्पोक तर्क नाम।

+1

'arg1' एक आरक्षित शब्द है? – BoltClock

+1

@ बोल्टक्लॉक: हाँ, कभी-कभी इसका उपयोग अतिप्रवाह रूप से किया जाता है। मैं केवल प्रोग्रामर की कल्पना कर सकता हूं जो मूल रूप से ऐसा करता है, इसका कोई मतलब नहीं है कि इसका क्या अर्थ है, लेकिन इसे कहीं और देखा और सोचा कि यह अच्छा लग रहा है। या, जैसा कि उत्तर बताता है, यह कभी-कभी स्वचालित कोड जेनरेटर द्वारा किया जाता है। –

+1

@ बोल्टक्लॉक नहीं, यह नहीं है, लेकिन कोड जेनरेटर यह नहीं जानता है।कोड जेनरेटर अक्सर सभी पहचानकर्ताओं के सामने @ प्रतीक डालते हैं। –

7

यह पहचानकर्ता से बचने का एक तरीका है।

उदा। निम्नलिखित दो बराबर हैं:

protected void Method1(Type1 @arg1, Type2 arg2) 
protected void Method1(Type1 arg1, Type2 arg2) 

@ केवल वास्तव में यदि आप एक खोजशब्द के बाद एक पहचानकर्ता नाम के लिए की जरूरत है उपयोगी है। नीचे @ बिना संकलन नहीं होगा:

protected void Method1(Type1 @class, Type2 arg2)

1

अपने विशिष्ट उदाहरण के लिए, यह कोई मतलब नहीं है। सी # में, @ प्रतीक का उपयोग कीवर्ड से बचने के लिए किया जाता है ताकि उन्हें चर नामों के रूप में उपयोग किया जा सके।

उदाहरण के लिए, निम्नलिखित एक संकलक त्रुटि उत्पन्न होगा:

public void Test(string class){...} 

लेकिन अगर आप @ साथ भागने, यह ठीक है:

public void Test(string @class){...} 
2

यह पैरामीटर के रूप में शब्द आरक्षित करने के लिए प्रयोग किया जाता है। उदाहरण:

string @string = "abc"; 

या:

string @class = "foo"; 

arg1 एक आरक्षित शब्द तो @ का उपयोग नहीं है आवश्यक नहीं है। यह कहा जा रहा है कि, अपने पैरामीटर नाम देने के लिए आरक्षित शब्दों का उपयोग करना एक अच्छा विचार नहीं है। ऐसे मामले हैं जहां यह उपयोगी है। उदाहरण के लिए एएसपी.नेट एमवीसी में कुछ HTML एक्सटेंशन विधियां HTML गुणों को उत्सर्जित करने के लिए पैरामीटर के रूप में अज्ञात ऑब्जेक्ट लेती हैं।

<%= Html.ActionLink("text", "action", "controller", null, new { @class = "abc" }) %> 

जो उत्पन्न करता है:

<a href="/controller/action" class="abc">text</a>