[英]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.