मैं एक वर्ग को प्रारंभ करने में सक्षम होना चाहता हूं जैसे कि मैं एक स्ट्रिंग शुरू करता हूं:मैं सी # में कक्षा कैसे बना सकता हूं कि मैं एक स्ट्रिंग की तरह आरंभ कर सकता हूं?
string str = "hello";
MyClass class = "hello";
मुझे वास्तव में पता नहीं है कि वास्तव में string str = "hello";
क्या करता है। मुझे लगता है कि "hello"
को new System.String("hello");
में कंपाइलर द्वारा अनुवादित किया जाता है लेकिन मुझे यकीन नहीं है। शायद यह संभव नहीं है या शायद मुझे कुछ बहुत ही मौलिक याद आ रही है; अगर यह मामला मेरी अज्ञानता बहाना है :)। जो मैं बनाने की कोशिश कर रहा हूं वह एक वर्ग है जो एक स्ट्रिंग की तरह काम करता है लेकिन स्ट्रिंग को स्वचालित रूप से फ़ाइल में संग्रहीत करता है।
ठीक है, जवाब देने के बाद मेरा कोड यहां है:
class StringOnFile
{
private static string Extension = ".htm";
private string _FullPath;
public bool Preserve = false;
public string FullPath
{
get
{
return _FullPath;
}
}
public static implicit operator StringOnFile(string value)
{
StringOnFile This = new StringOnFile();
int path = 0;
do{
path++;
This._FullPath = Path.GetFullPath(path.ToString() + Extension);
}
while(File.Exists(This._FullPath));
using (StreamWriter sw = File.CreateText(This._FullPath))
{
sw.Write(value);
}
return This;
}
public static implicit operator string(StringOnFile stringOnFile)
{
using (StreamReader sr = File.OpenText(stringOnFile._FullPath))
{
return sr.ReadToEnd();
}
}
~StringOnFile()
{
if(!Preserve) File.Delete(FullPath);
}
}
आपको क्या लगता है?
ओह, और वैसे, कोड को गैर कोड वाक्य के अंदर कोड बनाने का कोई तरीका है (मैं अब इस मंच के बारे में बात कर रहा हूं) (जैसे कोड "हैलो "वाक्य के अंदर" मुझे लगता है कि "हैलो" अनुवादित हो जाता है ... "मेरे प्रश्न में) मेरे प्रश्न में कोड की दो पंक्तियों की तरह रंग हैं? – Juan
"मुझे लगता है कि" हैलो "का उपयोग नए सिस्टम में कंपाइलर द्वारा किया जाता है। स्ट्रिंग (" हैलो ") '" - नहीं, स्ट्रिंग अक्षर बहुत कम स्तर पर .NET रनटाइम में बनाए जाते हैं। सी # में "हैलो" 'आईएल में एक 'ldstr" हैलो "निर्देश के अनुरूप है। –
तो हम कह सकते हैं कि स्ट्रिंग क्लास में ldstr के लिए एक निहित रूपांतरण है (मुझे लगता है कि एक स्ट्रिंग युक्त एक मेमरी ब्लॉक के लिए एक सूचक है)? मैं बस इस से समझने की कोशिश कर रहा हूं। सामान्य नियम क्या है, यह पता लगाना चाहते हैं, जब तक कि 'string str = "somthing" के लिए कोई सामान्य नियम न हो; "और उस मामले में शिकायतकर्ता क्या करता है, यह केवल उस मामले के लिए करता है। – Juan