gpt4 book ai didi

c# - 我想我需要一个带有构造函数的静态类?

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:20 25 4
gpt4 key购买 nike

因此,对于这个问题中肯定很糟糕的术语,我提前表示歉意 - 我正在尝试自学 C#,并在一些概念上苦苦挣扎。

在伪代码中,我有这样的东西:

static void Main()
{
// This will create lots of "Item"(s), and do stuff with them
}
public class Item
{
// a bunch of properties
public Item()
{
}
}

接下来,我需要一个 UtilityFunction1,它会做一些工作 - 它会在 Main() 期间被调用很多次,并传递给 Item 来用它们做一些计算.此函数需要设置一个 Dictionary 来完成它的工作。尽管会被多次调用,但 Dictionary 应该只设置一次。

我还需要一个 UtilityFunction2。与 UtilityFunction1 一样,此函数也需要一个字典来完成它的工作,它应该只设置一次。此函数将被 UtilityFunction1 调用多次。

因此,一方面,UtilityFunction1UtilityFunction2 似乎应该是公共(public)类,因为它们需要有一个构造函数来填充字典(涉及变量,循环和计算)。

另一方面,我只需要 UtilityFunction1UtilityFunction2 中的一个,所以看起来它们应该是静态方法。但如果是这样的话,他们如何/何时完成设置所需词典的工作?

你是如何做到这一点的?

最佳答案

您还可以将您的逻辑移到 Main 之外。迫使您使用 static 的是 Main 方法(通常是它所属的类)是静态的。这迫使所有其他事物(字段、方法、事件,随便你怎么说)也成为静态的。解决这个问题的最简单方法是创建一个新类来容纳您需要的所有东西。

创建新的逻辑类并将所有东西放入其中。 Item 类保持不变。为清楚起见,您可以将其移至单独的文件。

逻辑.cs:

public class Logic() {
private Dictionary<object,object> dict1 = new Dictionary<object,object>
private Dictionary<object,object> dict2 = new Dictionary<object,object>

public Logic() {
// some logical initializations here
}

private void UtilityFunction1 (Item itemToWorkOn) {
// you can access dict1 directly from here
}

private void UtilityFunction2 (Item itemToWorkOn) {
// you can access dict2 directly from here
}

public void Run() {
// run UtilityFunction1() many times
// run UtilityFunction2() many times
}
}

项目.cs:

public class Item() {
// a bunch of properties
public Item() {}
}

然后在您的 Main 中运行它。

程序.cs:

static class Program {
static void Main() {
new Logic.Run();
}
}

关于c# - 我想我需要一个带有构造函数的静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35426110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com