我希望能夠初始化類,就像我初始化字符串:如何在C#中創建一個類,以便像字符串一樣初始化?
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);
}
}
你覺得呢?
哦,順便說一下,是否有任何方法可以使代碼在非代碼句中(我現在正在討論這個論壇)(如代碼「hello 「在我的問題中,在句子」我認爲「你好」被翻譯......「)中有顏色就像我的問題中的兩行代碼? – Juan 2010-06-30 19:01:27
「我假設'」hello「'被編譯器轉換成新的'System.String(」hello「)'」 - 不,字符串文字以很低的級別嵌入.NET運行時。 C#中的「hello」對應於IL中的ldstr「hello」指令。 – 2010-06-30 19:13:40
所以我們可以說字符串類有一個隱式轉換爲ldstr(我假設這是一個指向包含字符串的memeory塊的指針)?我只是想從這個意義上理解。想要弄清楚什麼是通用規則,除非沒有'string str =「somthing」的通用規則;'''''''''''''''''' – Juan 2010-06-30 19:35:41