"\ N" और पर्यावरण के बीच का अंतर। नया


जवाबों:


203

प्लेटफॉर्म पर निर्भर करता है। विंडोज पर यह वास्तव में "\ r \ n" है।

MSDN से:

गैर-यूनिक्स प्लेटफार्मों के लिए "\ r \ n" स्ट्रिंग, या यूनिक्स प्लेटफार्मों के लिए "\ n" युक्त स्ट्रिंग।


5
Microsoft को अपने डॉक में डालने के लिए .NET UNIX कौन सा प्लेटफ़ॉर्म चलता है? (मेरा मतलब है, मोनो का एक हिस्सा।)
जैक

10
@ जैक आप एक फाइल में लिख सकते हैं जिसे यूनिक्स प्लेटफॉर्म में खोला जाएगा। या पैकेज में पाठ भेजना जो एक यूनिक्स मंच द्वारा प्राप्त किया जाएगा। और कुछ महीनों में .net यूनिक्स प्लेटफार्मों पर चल रहा होगा। यह पहले ही शुरू हो चुका है
जॉन डेमेट्रियौ

तो बस स्पष्टता के लिए: एक गैर-यूनिक्स मंच पर Environment.NewLineहै, \r\nलेकिन \nइसे "नई लाइन" भी कहा जाता है। उन्होंने सिर्फ इसके बाद के अधिक प्रसिद्ध नाम "लाइन फीड" के माध्यम से कॉल क्यों नहीं किया और भ्रम को काट दिया? वे \lभी इस्तेमाल कर सकते थे ।
rory.ap

157

Environment.NewLineस्रोत कोड से सटीक कार्यान्वयन :

.NET 4.6.1 में कार्यान्वयन:

/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the given
**        platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
    get {
        Contract.Ensures(Contract.Result<String>() != null);
        return "\r\n";
    }
}

स्रोत


.NET कोर में कार्यान्वयन:

/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the
**        given platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
    get {
        Contract.Ensures(Contract.Result() != null);
#if !PLATFORM_UNIX
        return "\r\n";
#else
        return "\n";
#endif // !PLATFORM_UNIX
    }
}

स्रोत (में System.Private.CoreLib)

public static string NewLine => "\r\n";

स्रोत (में System.Runtime.Extensions)


10
हाँ :) किसी कारण से मैं अपेक्षा कर रहा था कि .NET कार्यान्वयन कुछ विशाल जटिल कार्य हो सकता है
developerbmw

इस उदाहरण में स्रोत की सरलता को ध्यान में रखते हुए, शायद इसका उत्तर होना चाहिए।
क्रिस वाल्टर

70

जैसा कि दूसरों ने उल्लेख किया है, Environment.NewLineएक नई लाइन की शुरुआत के लिए एक मंच-विशिष्ट स्ट्रिंग लौटाता है, जो होना चाहिए:

  • "\r\n" (\ u000D \ u000A) विंडोज के लिए
  • "\n" ((u000A) यूनिक्स के लिए
  • "\r" ((u000D) मैक के लिए (यदि ऐसा कार्यान्वयन मौजूद है)

ध्यान दें कि कंसोल पर लिखते समय, पर्यावरण.न्यूलाइन कड़ाई से आवश्यक नहीं है। "\n"यदि आवश्यक हो तो कंसोल स्ट्रीम उपयुक्त नई-लाइन अनुक्रम में अनुवाद करेगा ।


मैक कार्यान्वयन मौजूद है। बस मोनो। किसी भी चीज पर चलता है।
डायकम

24
बस एक नोट, वह पुराना मैक होगा; new (OSX) macs का उपयोग\n
BlueRaja - Danny Pflughoeft

2
@ डीकैम, हाँ, लेकिन यह मेरे HP48gx पर वास्तविक धीमी गति से चलता है
Cod3monk3y

1
जैसा कि अन्य लोगों ने उल्लेख किया है और जैसा कि .Net स्रोत में भी इस प्रश्न से जुड़ा हुआ है, यह उत्तर सही नहीं है।
क्रिस वाल्टर

2
@ बॉलीक ने सिर्फ यह कहा कि यह 2009 में सच हो सकता था, ऐसा नहीं था। मैंने जाँच नहीं की।
aloisdg

23

Environment.NewLine उसी प्लेटफ़ॉर्म के लिए नया कोड लौटाएगा जिसमें आपका कोड चल रहा है

जब आप मोनो फ्रेमवर्क पर अपने कोड को लिनक्स में तैनात करते हैं तो यह बहुत उपयोगी होगा


8

से डॉक्स ...

गैर-यूनिक्स प्लेटफार्मों के लिए "\ r \ n" स्ट्रिंग, या यूनिक्स प्लेटफार्मों के लिए "\ n" युक्त स्ट्रिंग।


4

एनवायरनमेंट.न्यूलाइन विंडोज पर चलने पर "\ r \ n" देगा। यदि आप यूनिक्स आधारित वातावरण के लिए तार पैदा कर रहे हैं, तो आप "\ r" नहीं चाहते हैं।


4

जब आप "\ r \ n" के साथ अलग किए गए बहु-पंक्ति संदेश को प्रदर्शित करने का प्रयास करते हैं, तो आप मुश्किल में पड़ सकते हैं।

मानक तरीके से चीजों को करना और पर्यावरण का उपयोग करना एक अच्छा अभ्यास है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.