C# 尝试从方法内部使用可选参数创建全局对象实例



所以我对面向对象编程(电磁学和电路的EE(很陌生,我可能认为这是完全错误的。我的目标是创建大约 15-20 个对象,每个对象具有 x 个属性,其中两个属性是必需的,一个是可选的,默认为"false"字符串。这完全基于文本文件中解析的输入。我需要访问这些对象(不返回,因为我有另一个布尔参数要返回到父方法。这是我的对象类的样子(在我的主类内部(

public class Variable
{
public string varName { get; set;}
public string varVal { get; set;}
public string varParam {get; set;} //My optional parameter
public Variable (string varName1, string varVal1, string, varParam1 = "false")
{
varName = varName1;
varVal = varVal1;
varParam = varParam1;
}
}

现在,在我的主代码中,我有一个方法可以获取传递给它的字符串(文本文件中的一行(。我尝试将我在网上读到的关于全局变量的多件事放在一起:

public bool Method1 (string textLine, int lineIndex)
{
string parsedText = ...;
string parsedValue = ...;
...
public static Variable var1 = new Variable( parsedText, parsedValue);
return false;
}

所以本质上我需要:

父类 -> 程序主 -> 方法1 -> 创建对象 1(带有可选参数( -> 返回布尔值 -> 程序主 -> 方法2 -> 访问对象 1

目前它不起作用,因为方法变量创建行返回错误,因此无法编译。我确定我做错了,但我找不到任何组合在方法中创建的全局访问对象(仅在类中创建(的内容。我无法使类成为静态类,因为我不能在静态类中具有实例方法。

任何帮助将不胜感激,谢谢。

因此,如果我正确理解了您,那么您希望您的方法返回 true 或 false 以指示处理是否成功,并且您的方法应该返回创建的实例(我假设只有在成功的情况下(。

您可以考虑改变如何处理此问题的概念。 然后有几种方法可以做到这一点,您需要选择最适合您的程序的方法。 在这种情况下,也许最后一种方法最适合您?

1:返回空

值如果处理成功,则返回一个有效的对象。 如果不是,则返回 null。 然后,调用进程会检查它是否收到空值。 如果是这样,则它知道处理失败。

Variable var = Method1(...);
if (var != null)
{
....
}

2:抛出异常

与选项 1 类似。 但是,如果处理失败,则会引发异常。 调用进程必须捕获此内容,然后进行处理。

try
{
Variable var = Method1(...);
....
} catch(Exception ex)
{
//handle exception
}

3:扩展您的班级

您可以扩展要返回的对象的类以包含布尔运算符。 (我不太喜欢这个!

4:输出参数

在方法中,定义一个参数是 out 参数。 这允许它传入您的方法并再次传出。 这可能不适合您的用例,因为您不需要将其传入和传出。

Variable var = new Variable();
retValue = Method1(out var, ....);

5:返回元组

实际上,您可以从方法中返回多个值作为元组。 因此,您可以返回布尔值和新对象。 代码示例:

//Define your method signature to return two elements
public (bool, Variable ) Method1 (string textLine, int lineIndex)
{
Variable var = new Variable();
...
//Return your elements
return (false, var);
}
//Call method like this
(bool retvalue, Variable retVar) = Method1(....);
if (retValue)
{
....
}

您可以全局声明所需的静态变量,并根据文本文件在方法内部初始化。 班级课程 {

public static Variable var1;
public bool Method1(string textLine, int lineIndex)
{
string parsedText = "122";
string parsedValue = "123";

var1 = new Variable(parsedText, parsedValue);
return false;
}
}

多亏了jason.kaisersmith 的线程,我能够看到我正在寻找的是一个静态对象列表(因为我将从程序类中的多个方法访问对象(不同的类在 50 年代左右使用 6 或 7 个不同的对象列表产生对象总数(,这是我添加到我的程序类并替换为该方法的内容(bool 是由于其他一些错误造成的我内置的逻辑(:

public static List<Variable> variableList = new List<Variable>();
...
public bool Method1 (string textLine, int lineIndex)
{
string parsedText = ...;
string parsedValue = ...;
...
variableList.Add(new Variable( parsedText, parsedValue));
return false;
}

相关内容

  • 没有找到相关文章

最新更新