创建一个矩形,可以使用C#中的循环更改它的名称

时间:2016-06-14 04:08:30

标签: c# reflection

我想通过更改矩形的名称来创建几个矩形(带有动态名称)

int[] num= { 1, 2, 3, 4 }; //I need infant number of rectangle but here only a symbol of four numbers.  
for (int i = 0; i < 3; i = i + 1)
{
    string  mystring= "regctangle"+num[i].ToString();
    string  rectanglename = myString; //this is the rectangle name change with the loop
    Rectangle rectanglename= new Rectangle(10, 10, 3, 3);
}

结果应该是第一次迭代矩形

rectangle1

rectangle2

rectangle3

rectangle4

2 个答案:

答案 0 :(得分:3)

这个问题很有意思......这里有一些我想出的选项,因为我不确定你拥有这些独特的变量名是什么意思。

您需要做的是: 1)将矩形添加到字典或 2)将名称属性添加到R​​ectangle类。

我在下面的代码中做了两件事。

.

一旦你完成了这个设置,有关如何查找这些矩形及其属性的几个选项。

//dictionary for our rectangles
var rectangleDict = new Dictionary<string, Rectangle>();

for (int i = 0; i < 3; i = i + 1)
{
    var rectangle = new Rectangle(10, 10, 3, 3);    
    string  rectangleName = "rectangle" + i.ToString();

    //add rectangle name to new dictionary entry and the Rectangle name property
    rectangle.name = rectangleName;
    rectangleDict[rectangleName] = rectangle;           
}

答案 1 :(得分:0)

我想这里的第一个问题是你如何标记矩形?基于Rectangle的MSDN api documentation,没有可用于存储自定义名称的属性。

只是想一想,那里可以找到更好的解决方案。你可以扩展Rectangle类,抛出一个变量调用“name”或者什么,然后为它编写setter和getters操作符。

然后在您的代码中,当您需要打印标签时,只需执行。

int[] num= { 1, 2, 3, 4 };
for (int i = 0; i < num.length; i++)
{
     MyRectangle rectanglename = new MyRectangle("NAME_XXX", 10, 10, 3, 3);
     // Probably push the instance into an array for later reference.
}

// When you need the rectangle's name just do something like
console.writeline(rectangle10.name);

在此道歉。我的unix笔记本电脑没有安装visual studio的副本,所以我无法真正向你展示一段代码,只有伪代码。