【问题标题】:How do I name instances in C# automatically?如何在 C# 中自动命名实例?
【发布时间】:2012-08-18 10:00:31
【问题描述】:

我是新来的,所以如果这个问题很愚蠢,请原谅我。但是让我说我​​在上面找不到任何东西。

每当你启动一个新实例时,你都会去:

Word word1 = new Word(link, 24);

但是说,我将如何自动命名实例?如果一个方法自动创建新的实例,它如何自动为实例选择一个唯一的名称,例如 word2、word3、word4 等。

提前致谢!

【问题讨论】:

  • 好吧,如果变量名是自动选择的,你将如何在程序的其余部分使用它?
  • 没必要道歉。您的问题似乎非常有效和明确,并且您包含了代码。如果你想在这里得到别人的帮助,这通常是你所需要的一切。

标签: c# class methods instance


【解决方案1】:

听起来您正在寻找实例的“列表”。在这种情况下,请使用 List:

List<Word> words = new List<Word>();
words.Add(new Word(link, 24));

正如其他人评论的那样,如果您需要按名称查找“变量”,字典也可以:

Dictionary<string, Word> words = new Dictionary<string, Word>();
words.Add("word1", new Word(link, 24));

然后您可以通过该字符串引用它:

if (words.ContainsKey("word1")) {
  Word useWord = words["word1"];

或者直接引用类:

words["word1"].SomeProperty...

【讨论】:

  • “名称”成为列表中的项目索引。
  • 可能值得指出的是,如果您希望能够在运行时使用密钥“命名”每个实例,也可以使用 Dictionary&lt;K, V&gt;。不过我会让你添加那个例子:)
【解决方案2】:

你不能在像 c# 这样的编译语言中做这样的事情。您能做的最好的事情就是创建一个单词数组。

Word[] words = new Word[10];
words[0] = new Word(link, 24);
...

另一方面,您是否考虑过比 word1、word2 等更好的名称来解释变量的用途?

【讨论】:

    【解决方案3】:

    重要的是要理解您在这里命名变量,而不是实例。对象通常没有名称。接下来,如果你想要一个收藏,就这么说吧:

    List<Word> words = new List<Word>();
    words.Add(new Word(link, 24));
    ...
    

    (或者你可以使用一个数组,或者任何最适合你的用例的东西。)

    在 C# 中从不使用动态名称动态声明变量 - 您的代码会指定确切的名称。

    如果这对您没有帮助,请告诉我们更多关于您想要实现的目标,而不是您希望如何实现它。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 2018-04-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多