C# 为某些数字创建文本分析

C# 为某些数字创建文本分析,c#,C#,我有一个文本框,我想用它来检测某些数字(1-65),这些数字附加了一个值,以便用这个值进行数学运算 示例:当用户键入数字“50”时,我想将其与值4500(504500)相关联 因此,对于每个数字1-65,我想分配一个特定的值,然后当用户键入一个数字1-65时,程序将获取相关的值并将其分配给一个变量,这样我就可以进行数学运算 int lvl50 = 4500; lvl50 = clvl; tolvl = clvl - currentexp; int ttlvl = (tlvl / ptexp)

我有一个文本框,我想用它来检测某些数字(1-65),这些数字附加了一个值,以便用这个值进行数学运算

示例:当用户键入数字“50”时,我想将其与值4500(504500)相关联

因此,对于每个数字1-65,我想分配一个特定的值,然后当用户键入一个数字1-65时,程序将获取相关的值并将其分配给一个变量,这样我就可以进行数学运算

int lvl50 = 4500;
lvl50 = clvl;

tolvl = clvl - currentexp;
int ttlvl = (tlvl / ptexp) +1;

我在找这样的东西。

我想你可以用
字典

使用用户输入:

var input = int.Parse(textBox1.Text);
var value = values[input];
int input, value;
if(int.TryParse(textBox1.Text, out input)){
  if(values.Contains(input){
    value = values[input];
  }
}
或者使用
TryParse
ContainsKey
方法来避免可能的异常

int input = -1;
if(int.TryParse(textBox1.Text, out input) && values.ContainsKey(input))
{
    var value = values[input];
}

我能想到的一种方法是使用一本
字典
; 加上(504500);:

var values=newdictionary();
增加(504500);
// ... 等

创建公式/函数: 如果数字1-65的值有任何公式,则可以使用创建一个方法来实现该公式值以使用它

示例:

public static int myFormula(int number)
{
    return number * 90;
}
var myDic = Dictionary<int, int>() {
    new { 1, 1 },
    new { 50, 4500 },
};
字典: 如果以下数字匹配值没有任何可见公式,则可以使用
字典
将其匹配为特定值

示例:

public static int myFormula(int number)
{
    return number * 90;
}
var myDic = Dictionary<int, int>() {
    new { 1, 1 },
    new { 50, 4500 },
};
var myDic=Dictionary(){
新的{1,1},
新{504500},
};

从您的代码片段来看,(在我看来)您可能正在根据键计算字典中的值。您可以将计算值的逻辑放在单独的方法中:

private int CalculateValue(int x)
{
    // calculate value and return it
}
然后为特定范围的数字创建字典,如下所示:

var dict = Enumerable.Range(1, 65).ToDictionary(x => x, CalculateValue);
要使用字典中的元素,只需使用键引用它:

var matchingValue = dict[50];  // Lookup key 50
如果密钥可能不存在,您可以测试它:

var value = dict.ContainsKey(72) ? dict[72] : -1;  // Assign some default value

像其他答案所建议的那样使用字典对你很有用,但是如果你的数字1-65没有空白,你可以使用列表(甚至是一个简单的数组)。列表的索引将作为您的输入。这将比字典更容易、更有效

var values = new List<int> { 1000 , 4500 };

一旦我得到了这个,我如何将值“4500”分配给一个变量?@Advancin
int myVariable=values[50]
您应该使用
TryParse
TryGetValue
来处理错误的用户输入。我已经用原始答案处理了它,但是如果我tr使用
TryParse
TryGetValue
我会得到一个错误声明
clvl
与声明Leveling_Estimator.Form1.clvl冲突,我不知道为什么。我认为答案可以通过使用
Dictionary
来改进,这样您就不必解析文本输入,但如果文本无效,您将不得不处理
IndexOutOfRangeException
(或字典抛出的内容)。
int input, value;
if(int.TryParse(textBox1.Text, out input)){
  if(values.Contains(input){
    value = values[input];
  }
}