Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用整数增加C#中的名称_C# - Fatal编程技术网

用整数增加C#中的名称

用整数增加C#中的名称,c#,C#,我需要得到一个对象并检查它是否已经存在 如果是这样,我想添加一个数字,或在其名称中增加数字。 例如,如果我有一个对象“a”,并且它存在,我需要添加一个1,所以它被称为a1。 如果存在a1、a2等 我该怎么做呢 我的代码: if (e.TreeNode.Tag is Variant) { if (variantExists(e.TreeNode.Text)) { Random r = new Random(); int randomNumber =

我需要得到一个对象并检查它是否已经存在

如果是这样,我想添加一个数字,或在其名称中增加数字。 例如,如果我有一个对象“a”,并且它存在,我需要添加一个1,所以它被称为a1。 如果存在a1、a2等

我该怎么做呢

我的代码:

if (e.TreeNode.Tag is Variant)
{
    if (variantExists(e.TreeNode.Text))
    {
        Random r = new Random();
        int randomNumber = r.Next(0, 99);
        e.TreeNode.Text = e.TreeNode.Text + randomNumber;
        //e.TreeNode.Remove(); 
        return;
    }
}

你能改变TreeNode的等级吗?我将为Label(没有索引的Name)和Index添加属性,并使Name属性为只读,即

class TreeNode
{
    public int Index {get;set;}
    public string Label {get;set;}

    public string Name 
    {
        get { return Index == 0 ? Label : Label + Index; }
    }
}
在代码中,您只需要将Index属性设置为所需的值,而不必担心整个字符串解析过程

string name = "SomeName";

string tempName = name;
int n = 0;

while (DoesNameExist(tempName))
{
    n++;
    tempName = name + n;
}

name = tempName;
这对于同一对象的大量对象来说是无效的,但这不应该发生,对吗

用另一种方法,去掉尾随的数字来找到“原始”名称的问题在于,原始名称上可能真的有数字

你说你加上:

SomeName
SomeName99
SomeName
SomeName99
上面的代码将为您提供

SomeName
SomeName1
SomeName99
SomeName991

类似于这一点的东西可能会起作用:

var existingItems = new HashSet<string>();
var items = new List<string>{"a", "b", "a"};
foreach (var item in items)
{
    var tempItem = item;
    var i = 1;
    while (!existingItems.Add(tempItem))
        tempItem = tempItem + i++;
}
var existingItems=new HashSet();
变量项=新列表{“a”、“b”、“a”};
foreach(项目中的var项目)
{
var tempItem=项目;
var i=1;
而(!existingItems.Add(tempItem))
tempItem=tempItem+i++;
}

有些代码会非常有用……你有没有到目前为止尝试过的任何代码示例?动机是什么……?为了让我们回答,你应该详细说明(最好像@GuillaumeSlashy和Kev所说的那样,添加一些代码)你是如何坚持和读取名称的。基本上,我有一个垃圾桶,对象被删除后可以放在垃圾桶中,但是如果创建了一个与垃圾桶中的对象同名的对象,那么它会自动丢弃,必须创建一个新的对象。这不应该是这样的,因为客户机希望添加新对象,但要使用名称变体。