Tôi muốn để có thể khởi tạo một lớp giống như tôi khởi tạo một chuỗi:Làm cách nào để tạo một lớp trong C# mà tôi có thể khởi tạo giống như một chuỗi?
string str = "hello";
MyClass class = "hello";
Tôi thực sự không biết chính xác những gì string str = "hello";
làm. Tôi giả sử "hello"
được dịch bởi trình biên dịch thành new System.String("hello");
nhưng tôi không chắc chắn. Có lẽ là không thể hoặc có thể tôi đang thiếu một cái gì đó rất nguyên tố; nếu đó là trường hợp lý do sự thiếu hiểu biết của tôi :). Những gì tôi đang cố gắng để làm là một lớp học hoạt động giống như một chuỗi nhưng lưu trữ chuỗi trong một tập tin tự động.
Ok, đây là mã của tôi sau khi đọc bạn câu trả lời:
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);
}
}
Bạn nghĩ gì?
Ồ, và nhân tiện, có cách nào để làm cho mã bên trong một câu không mã (tôi đang nói về diễn đàn này ngay bây giờ) (giống như mã "hello "bên trong câu" tôi giả định "hello" được dịch ... "trong câu hỏi của tôi) có màu sắc giống như hai dòng mã trong câu hỏi của tôi? – Juan
"Tôi giả sử' "hello" 'được dịch bởi trình biên dịch thành mới' System.String ("hello") '" - không, chuỗi ký tự được xây dựng trong thời gian chạy .NET ở mức rất thấp. '" hello "' trong C# tương ứng với lệnh 'ldstr" hello "' trong IL. –
Vì vậy, chúng ta có thể nói rằng lớp chuỗi có một chuyển đổi tiềm ẩn để một ldstr (Tôi giả định đó là một con trỏ đến một khối memeory chứa một chuỗi)? Tôi chỉ cố gắng hiểu được điều này. Bạn muốn tìm ra nguyên tắc chung là gì, trừ khi không có quy tắc chung cho 'string str =" somthing ";' và trình biên dịch thực hiện điều gì trong trường hợp đó, nó chỉ thực hiện cho trường hợp đó. – Juan