繁体   English   中英

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

[英]Create a rectangle that can change it's name using loop in C#

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

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

这个问题有点有趣...我想出了一些选择,因为我不确定您打算使用这些唯一的变量名是什么意思。

您需要做的是: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 Use the dict to iterate through them
foreach (KeyValuePair<string, Rectangle> rect in rectangleDict)
{
    Console.WriteLine(rect.Key);    
    //iterate through any property in the rectangle such as its sides, name, etc
    Console.WriteLine(rect.Value.name);
}

//#2 use the key directly to access a property
Console.WriteLine(rectangleDict["rectangle1"].name);

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

只是一个想法,可能会有更好的解决方案。 您可以扩展Rectangle类,放入变量调用“名称”之类的东西,然后为其编写setter和getter运算符。

然后在您的代码中需要打印标签时就可以了。

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的副本,因此我无法真正向您展示适当的代码,只有伪代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM