c# - 可单独寻址的变量的可迭代列表
问题描述
我需要构建一个变量列表(或数组、集合或其他),我既可以在循环中迭代这些变量,也可以在需要时单独寻址。说这些是我的变量:
double length = 5;
double width = 10;
double height = 7;
double weight = 14;
现在,所有这些变量都必须进入一个列表(或其他东西),我们称之为 myList。然后我应该能够像这样解决它们:
myList.length = 1;
myList.width = 3
myList.weight = 60;
但也像这样迭代,一次设置它们:
foreach (double item in myList)
{
item = 15;
}
这只是一个原始示例,但列表中的项目可能是更复杂的类型,例如自定义类,所以我有时会像这样处理或迭代它们myList.item.value = 5;
等等。但我想你明白了要点。
我怎样才能做到这一点?我知道最明显的方法是使用字典,但它只会存储伪名称(作为键中的字符串类型),所以我必须有一个带有变量名的单独类/结构,如下所示:
struct variableNames
{
string length = "length"
string width= "width"
//...etc
}
然后像这样获取/设置值:
myDictionary[variableNames.width].value = 5;
这样,我会从我的 IDE 中获得变量名建议,编译器会捕获错误类型,但这是一种非常尴尬的处理方式。
我怀疑这也可以通过反射来完成(使 myList 成为一个类,变量将是它的全局变量,然后遍历该类的所有成员),但是反射相对较慢,并且性能在这里很重要。也许它也可以用指针来完成,但对于这么简单的事情来说,这似乎是不必要的复杂。
那么,解决此问题的最佳方法是什么?
解决方案
使用面向对象。
public class Square
{
double length = 5;
double width = 10;
double height = 7;
double weight = 14;
public Square()
{
length = 0;
width = 0;
height = 0;
weight = 0;
}
}
然后你可以实例化对象:
Square sq = new Square();
sq.length = 5;
sq.width = 5;
sq.height = 5;
sq.weight = 5;
并列一个清单:
List<Square> squares = new List<Square>;
squares.add(sq);
对于循环:
foreach (Square item in squares)
{
item.length = 3;
item.width = 3;
item.height = 3;
item.weight = 3;
}
推荐阅读
- swift - CollectionView 单元格不可见
- powershell - Invoke-RestMethod :底层连接已关闭:发送时发生意外错误。- 詹金斯
- angular - Clarity Forms - 将多个输入元素放在同一行
- c - 分数数组
- docker - 将文件从主机替换为具有已安装卷的容器
- kubernetes - 如何编辑 Kubernetes 集群角色定义
- javascript - 如何将获取数据的结果分配给变量?ReactJS
- google-cloud-sql - Google Cloud SQL 实例卡在“实例正在更新”中
- c# - LINQ to Entities 无法识别该方法(布尔值)
- sql-server - 以月和日计算两个日期之间的时间段