[英]Creating a callback in C# to read lines from a text file
我的程序中有一個名為FileName
的參數。 它沒有默認值。 每當設置一個值時,我都想要一個回調來觸發文件的讀取。 我是C#
的新手,所以我不知道如何創建回調。
該字段初始化為
public string FileName { get; set; }
每當設置它的值時,我想執行以下代碼行
string[] lines = System.IO.File.ReadAllLines(@FileName);
變量FileName
的設置由用戶完成,並由我使用的框架很好地處理,因此它只是獲得我需要了解的回調。 據我目前了解,因為我沒有為FileName
提供默認值,所以默認情況下為Null
正如其他人所說,不清楚您為什么堅持設置一個值來觸發文件讀取。 下面顯示了如何從一個表單(或類)獲取數據到另一個表單(或類)。
有關詳細信息,請參閱:
雖然這三者都可用於傳遞數據,但使用哪一種的適當性取決於希望發生什么。
構造函數:
版本 1(屬性):
public class Class1
{
public string Filename { get; private set; }
public Class1 (string filename)
{
Filename = filename;
}
}
版本 2(現場):
public class Class1
{
private string _filename;
public Class1 (string filename)
{
_filename = filename;
}
}
方法:
版本 1(屬性)
public class Class1
{
public string Filename { get; private set; }
public void SetFilename (string filename)
{
Filename = filename;
}
}
版本 2(現場)
public class Class1
{
private string _filename;
public void SetFilename (string filename)
{
_filename = filename;
}
}
財產:
版本 1:
public class Class1
{
public string Filename { get; set; }
}
版本 2:
public class Class1
{
private string _filename;
public string Filename
{
get
{
return _filename;
}
set
{
_filename = value;
}
}
}
您的 OP 似乎表明您正在嘗試執行類似於以下操作的操作:
警告 - 不推薦以下內容:
public class Class1
{
private string _filename;
private string[] _lines = null;
public string Filename
{
get
{
return _filename;
}
set
{
_filename = value;
//read file
_lines = System.IO.File.ReadAllLines(@FileName);
}
}
}
根據文件的大小,此操作可能需要一些時間才能完成。 因此,不建議將讀取文件的代碼放在屬性設置器中。
而是使用一種方法(推薦):
版本 1:
public class Class1
{
public string Filename { get; private set; }
public string[] ReadFile (string filename)
{
//set value
Filename = filename;
//read file
return System.IO.File.ReadAllLines(filename);
}
}
版本 2:
public class Class1
{
public string Filename { get; private set; }
public string[] Lines { get; private set; } = null;
public bool ReadFile(string filename)
{
try
{
//set value
Filename = filename;
//read file
Lines = System.IO.File.ReadAllLines(filename);
return true;
}
catch (Exception ex)
{
//ToDo: add desired code
throw;
}
}
}
版本 3:
public class Class1
{
public string Filename { get; private set; }
public string[] Lines { get; private set; } = null;
public void ReadFile (string filename)
{
//set value
Filename = filename;
//read file
Lines = System.IO.File.ReadAllLines(filename);
}
}
資源:
我想你想要這個? 您只需更改默認的 setter 和 getter。
private string fileName;
public string FileName
{
get
{
return fileName;
}
set
{
fileName = value;
string[] lines = System.IO.File.ReadAllLines(@FileName);
}
}
但也許這是個壞主意,請閱讀評論:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.