在以下示例中,我想知道一种使顶部示例功能像顶部示例一样的好方法。我知道范围是最下面的示例不起作用的原因。
我对此感兴趣,因此我可以整理程序的主体并消除一些重复的代码。
namespace example_1
{
class Program
{
static void Main(string[] args)
{
int test = 5;
bool trigger = true;
if (trigger)
{
test++;
trigger = false;
}
}
}
}
namespace example_2
{
class Program
{
static void Main(string[] args)
{
int test = 5;
bool trigger = true;
if (trigger)
{
mod_test();
}
}
public static void mod_test()
{
test++;
trigger = false;
}
}
答案 0 :(得分:4)
您可以在方法之外声明属性,但仍可以在类中声明:
class Program
{
// both of them are accessible within the class scope, but not outside
static int test = 5;
static bool trigger = true;
static void Main(string[] args)
{
if (trigger)
{
mod_test();
}
}
public static void mod_test()
{
test++;
trigger = false;
}
}
答案 1 :(得分:0)
我认为在这种情况下使用数据容器对象更合适。例如,在下面的示例中,我将int
和bool
变量包装到TestData
类中。这样,您就不必使用全局变量,而仍然可以通过对象引用进行任何类型的操作。
namespace example_3
{
class TestData
{
public bool Trigger { get; set; }
public int Test { get; set; }
}
class Program
{
static void Main(string[] args)
{
var testData = new TestData
{
Test = 5,
Trigger = true
};
if (testData.Trigger)
{
mod_test(testData);
}
}
public static void mod_test(TestData data)
{
data.Test++;
data.Trigger = false;
}
}
}