c# - C# 列表 - 一旦数据在列表中,我是否再次使用类方法(获取/设置等)?
问题描述
关于 OOP 的一个快速问题。我将列表与类和类构造函数一起使用。所以我使用类构造函数来定义数据集,然后在用户创建它们时将每条记录添加到我的列表中。
我的问题是,一旦数据在列表中并说我想更改某些内容,找到记录,使用该记录创建一个实例,然后使用我的类方法做任何需要做的事情是一种好习惯 - 然后将其放回名单?
例如下面我有我的类与构造函数。假设我只希望系统在 Privacy 字段设置为 public 时发布 strCode。现在只使用实例我会使用例如 Console.WriteLine(whateverproduct.ProductCode) 但如果记录已经在列表中,我是否将其从列表中取出 - 创建一个实例然后使用此方法?
class Product
{
private String strCode;
private Double dblCost;
private Double dblNet;
private String strPrivacy;
public Product(String _strCode, Double _dblCost, Double _dblNet, String _strPrivacy)
{
strCode = _strCode;
dblCost = _dblCost;
dblNet = _dblNet;
strPrivacy = _strPrivacy;
}
public string ProductCode
{
get
{
if (strPrivacy == "Public")
{
return strCode;
}
else
{
return "Product Private Can't release code";
}
}
}
解决方案
假设我们有以下内容:
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Amount { get; set; }
private string _test = "Some constant value at this point";
public string GetTest()
{
return _test;
}
public void SetTest()
{
//Nothing happens, you aren't allow to alter it.
//_test = "some constant 2";
}
}
public class Program
{
public static void Main(string[] args)
{
List<Test> listOfTest = new List<Test>()
{
new Test() {Id = 0, Name = "NumberOne", Amount = 1.0M},
new Test() {Id = 1, Name = "NumberTwo", Amount = 2.0M}
};
Test target = listOfTest.First(x => x.Id == 0);
Console.WriteLine(target.Name);
target.Name = "NumberOneUpdated";
Console.WriteLine(listOfTest.First(x => x.Id == 0).Name);
Console.WriteLine(listOfTest.First(x => x.Id == 0).GetTest());//This will alsways be "Some constant value at this point";
Console.ReadLine();
}
}
从技术上讲,您可以完全取消 SetTest 方法。但是,我包含它是为了演示如果您想更改 _test 会是什么样子。
你不想创建一个类的新实例,你已经有了一个实例。您可以在需要的地方更改班级作者允许的班级。并在需要时保留该类参考。完成后,一旦程序找不到对您的对象(实例)的活动引用,该引用将被垃圾收集。
推荐阅读
- swift - 协议扩展初始化导致编译时段错误:11
- android - 应用程序组件未显示,但模拟器正在运行
- linux - 让 Apache VirtualHost 正确映射的问题
- google-sheets - 尝试从同一文件的第二张工作表访问数据时返回 #ERROR 公式解析错误
- javascript - 选择收音机时,更改 vue.js 版本 2 上的图像 src
- latex - 我可以将整个“表 1”作为 Latex 中的参考进行点击吗?
- ios - React本机IOS键盘快捷键不起作用
- php - PHP - 连接 SQL Server
- python - 用另一个值替换具有奇数位置的 Python 列表元素
- python - python:How do I improve this code(TicTacToe)?