नामस्थान MS.Internal
में, NamedObject
नाम की एक कक्षा है।string.Format पर {{{0}}} क्या करता है?
यह कोड का एक अजीब ब्लॉक है:
public override string ToString()
{
if (_name[0] != '{')
{
// lazily add {} around the name, to avoid allocating a string
// until it's actually needed
_name = String.Format(CultureInfo.InvariantCulture, "{{{0}}}", _name);
}
return _name;
}
मैं इस टिप्पणी को विशेष रूप से के बारे में उत्सुक हूँ:
// lazily add {} around the name, to avoid allocating a string
// until it's actually needed
_name = String.Format(CultureInfo.InvariantCulture, "{{{0}}}", _name);
कि 'आलसी' कैसी है? आलसी होने के लिए यह क्या करता है?
reference source से पूर्ण वर्ग:
//----------------------------------------------------------------------------
//
// <copyright file="NamedObject.cs" company="Microsoft">
// Copyright (C) Microsoft Corporation. All rights reserved.
// </copyright>
//
// Description: Placeholder object, with a name that appears in the debugger
//
//---------------------------------------------------------------------------
using System;
using System.Globalization;
using MS.Internal.WindowsBase;
namespace MS.Internal
{
/// <summary>
/// An instance of this class can be used wherever you might otherwise use
/// "new Object()". The name will show up in the debugger, instead of
/// merely "{object}"
/// </summary>
[FriendAccessAllowed] // Built into Base, also used by Framework.
internal class NamedObject
{
public NamedObject(string name)
{
if (String.IsNullOrEmpty(name))
throw new ArgumentNullException(name);
_name = name;
}
public override string ToString()
{
if (_name[0] != '{')
{
// lazily add {} around the name, to avoid allocating a string
// until it's actually needed
_name = String.Format(CultureInfo.InvariantCulture, "{{{0}}}", _name);
}
return _name;
}
string _name;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
यह केवल एक बार नाम_ को प्रदान करती है प्राप्त करने के लिए एक विशेष अंकन कर रहे हैं अगर इसके पहले नहीं किया तो –
यह आलसी के रूप में माना जाता है क्योंकि घुंघराले-ब्रैकेट वाली स्ट्रिंग को 'ToString() 'पर पहली कॉल तक उत्पन्न नहीं किया जाता है। आप * आलसी * के रूप में * मांग पर * पढ़ सकते हैं। –
@ FrédéricHamidi ओह, यह एक चुस्त छोटी हैक – Mafii