请问高手如何从数组中取出变量名,而不是变量内容?

caibirdcnb 2016-05-28 04:20:37
各位高手,下面的例子中,x得到的是 "1, 2, 3","4, 5, 6"这些字符串,请问如何根据xArr[]得到a,b,而不是a,b的内容?
背景是有N个a,b这样的字符串变量,需要做同样的处理,因此希望通过一个数组引用这些变量来循环。

string a = "1, 2, 3";
string b = "4, 5, 6";
string xArr[] = {a, b}

foreach (string x in Arr)
{
console.writeline(x);
}

谢谢!
...全文
283 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caibirdcnb 2016-06-02
  • 打赏
  • 举报
回复
引用 10 楼 wzn721721 的回复:

public int[] ConvertTo(string str)
        {
            return str.Split(',').Select(x => Convert.ToInt32(x)).ToArray();
        }
////////////////////////////////////////////////
X=ConvertTo(A);
Y=ConvertTo(B);
...
////////////////////////////////////////////////
我开始也这么想过,但参数使用到ref因为要在方法里面判断数组的length,但该参数刚好是属性无法使用ref。 (那时我还不知道有ToArray())
mnxm 2016-05-28
  • 打赏
  • 举报
回复

public int[] ConvertTo(string str)
        {
            return str.Split(',').Select(x => Convert.ToInt32(x)).ToArray();
        }
////////////////////////////////////////////////
X=ConvertTo(A);
Y=ConvertTo(B);
...
////////////////////////////////////////////////
caibirdcnb 2016-05-28
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
            string A = "1, 2, 3";
            var X = A.Split(',').Select(x => Convert.ToInt32(x)).ToArray();

            Console.WriteLine(X.GetType());
            for (var i = 0; i < X.Length; i++)
            {
                Console.WriteLine(X[i]);
            }
谢谢,但这只是实现内层转换,我有N个A和N个X都需要做这样的操作,一个一个copy代码没效率吧?
mnxm 2016-05-28
  • 打赏
  • 举报
回复
这是一个错误的思路 实际你要完成的工作只需要两三行代码 而你现在写了这么多代码还没完全实现功能
xuzuning 2016-05-28
  • 打赏
  • 举报
回复
            string A = "1, 2, 3";
var X = A.Split(',').Select(x => Convert.ToInt32(x)).ToArray();

Console.WriteLine(X.GetType());
for (var i = 0; i < X.Length; i++)
{
Console.WriteLine(X[i]);
}
caibirdcnb 2016-05-28
  • 打赏
  • 举报
回复
再编辑修正一下思路 arr = {X, Y, ...} arr2 = {A,B,...} char[] delimiters = { ' ', ',', '.', ':', '\t' }; for (int i= 0; i< arr.Length; i++) { string[] words =arr2[i].Split(delimiters); arr[i][] = new int[words.Length]; for (int j = 0; j < words.Length; j++) { arr[i][j]= Convert.ToInt32(words[j]); } } 还有一个问题,如何通过 X = new int[] {A},对A进行某种处理使其成为数字。 string A = "1, 2, 3"; string B = "4, 5, 6" int[ ] X; int[ ] Y;
caibirdcnb 2016-05-28
  • 打赏
  • 举报
回复
各位高手,我的问题还是没有解决: string A = "1, 2, 3"; string B = "4, 5, 6" int[ ] X; int[ ] Y; 我的目标是得到: X = {1, 2, 3} Y = {4, 5, 6} 于是,我开始编程: char[] delimiters = { ' ', ',', '.', ':', '\t' }; string[] words =A.Split(delimiters); X = new int[words.Length]; for (int j = 0; j < words.Length; j++) { X[j] = Convert.ToInt32(words[j]); } 这样,我应该能得到X = {1, 2, 3} 用同样的方法可以得到Y的结果,但由于我有N个字符串和N个数组,所以我必须再加一层外循环。 于是,很自然地我想有个数组或什么东西能存放{X, Y, ...}和存放{A, B, ...},以便我添加外循环。 我个人觉得这应该是一个很正常的思路,只是语法不熟悉,不知道有什么东西能存放{X, Y, ...},里面的X, Y仅仅代表变量本身,不代表X,Y所代表的内容。 arr = {X, Y, ...} char[] delimiters = { ' ', ',', '.', ':', '\t' }; for (int i= 0; i< arr.Length; i++) { string[] words =A.Split(delimiters); arr[i][] = new int[words.Length]; for (int j = 0; j < words.Length; j++) { arr[i][j]= Convert.ToInt32(words[j]); } }
  • 打赏
  • 举报
回复
引用 1 楼 caibirdcnb 的回复:
举个例子,我有100个字符串变量,我想每个字符串变量的内容再加上字符a,由于操作方法一样,但需要写100次。 如何用一个循环对这100个字符串变量做同样的动作呢?
没有什么编程时对“字符串变量”进行编程的概念,你的问题说明你压根就不理解什么是数据结构。 变量是程序设计静态概念,用来引用你定义好的数据结构,你的程序流程过程中都是处理这些数据结构对象。没有什么通过变量名来宏代换为变量值的编程概念。 你的问题说明你没有学到数据结构课程,只学了编程第一节课就不上学了。
  • 打赏
  • 举报
回复
没有什么“a,b”,编译器不支持,你的程序也没有正经地标记什么“a,b”给 xArr。不要瞎忽悠。 如果要标记“a,b”,则需要真正去设计class结构,例如
public class NamedString{
    public string Name;
    public string Value;
}
string a = "1, 2, 3";
string b = "4, 5, 6";
NamedString[] xArr = new NamedString[] { new NamedString{Name = "a", Value =a}
    new NamedString{Name="b", Value = b}
};

foreach (string x in Arr)
{
     console.writeline(x.Name);
}
也就是说,正规地编程设计本来就可以规范地表示这种数据结构。而你不走正路,硬要编译器、语言本身给你胡乱解析,这就怪不得编程语言不配合你了!
Forty2 2016-05-28
  • 打赏
  • 举报
回复
你可以用Dictionary,既可以给变量取名,又可以达到你更改的目的:

var dict = new Dictionary<string, string>()
{
    {"a", "1, 2, 3" },
    {"b", "4, 5, 6"},
};
foreach(var key in dict.Keys.ToList())
{
    dict[key] = "xxx" + dict[key];
}
string updated = dict["a"]; // "xxx1, 2, 3"
caibirdcnb 2016-05-28
  • 打赏
  • 举报
回复
举个例子,我有100个字符串变量,我想每个字符串变量的内容再加上字符a,由于操作方法一样,但需要写100次。 如何用一个循环对这100个字符串变量做同样的动作呢?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧