gpt4 book ai didi

c# - 在 for 循环中将字符串解析为具有 "Model.x"属性的 int 保留为字符串格式

转载 作者:行者123 更新时间:2023-11-30 22:55:22 25 4
gpt4 key购买 nike

我有一个简单的表单,它接受从 11 个问题的单选按钮选择 (1-5) 中选择的数字,并将这些值作为 varchar(10) 数据发布到数据库中。我打算通过一个简单的 for 循环将用户发送到一个列出这些分数总和的结果页面,但是当我尝试将数据解析为整数格式时,由于解析错误,它只会导致零。这是我的代码示例:

// Q1 - Q11 are the questions in my Db, using Model property

int sum = 0;
int temp = 0;
String question;

for (int i = 11; i >= 1; i--)
{
question = "Model.Q" + i.ToString();
temp = int.Parse(question);
sum += temp;
}

return sum;

奇怪的是,如果我单独解析它们,比如写: Int32.TryParse(Model.Q5, out temp);我能够很好地解析数据。我的控制台显示循环将 question 变量保持为带引号的 "Model.Qx",最终导致总和为 0。我也尝试过为此使用 Int32.TryParse(); 并且除了处理错误外没有任何区别。

如果一个字符串包含与 i 变量连接的标点符号,它是否可以简单地不被解析,或者我在这里遗漏了其他东西?我想避免单独解析每个问题,因为它在代码中看起来相当难看。

提前致谢。

最佳答案

您的问题是您试图通过使用具有相同名称的字符串来访问变量。这是行不通的,就像名称 gitgecko 不是 you 一样。

如果您的模型有许多名称相似的属性,您可以编写一个函数在它们之间切换:

object GetQ(int number)
{
switch(number)
{
case 1: return Model.Q1;
case 2: return Model.Q2;
// etc...
}
}

或者您可以更改模型以将这些变量存储在数组或列表中,或者任何合适的内容。

例如,如果您目前有:

class Model
{
string Q1;
string Q2:
// repeated 11 times

你可以:

class Model
{
string[] Q = new string[11];
}

这使您能够执行 Model.Q[x]

关于c# - 在 for 循环中将字符串解析为具有 "Model.x"属性的 int 保留为字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com