如何在Main中声明的另一个方法中使用变量/ const?
不传递它:static string my_method(string my_variable_to_pass)
只需使用static void my_method()
我想要的是将任何其他方法调用到Main中,它必须使用Main中声明的变量。
我不想使用公共静态类,因为它似乎不是正确的方法。 还有另一种方式吗?
这是我想要的一个例子。此代码不起作用,因为当前竞争中不存在"猫#34;在test_method()里面。 但是,如果不添加太复杂的代码,我怎么能让它工作呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
string cats;
cats = "1000 Cats";
test_method();
cats = "6 Cats";
test_method();
}
static void test_method()
{
Console.Write(cats);
}
}
答案 0 :(得分:3)
我想要的是将任何其他方法调用到Main中,它必须使用Main中声明的变量。
如果不使用闭包,这是不可能的。但是在你的情况下,使用类级别字段要好得多,如下所示:
class Program
{
private static string cats;
static void Main(string[] args)
{
cats = "1000 Cats";
test_method();
cats = "6 Cats";
test_method();
}
static void test_method()
{
Console.Write(cats);
}
}
答案 1 :(得分:1)
我不想使用公共静态类,因为它似乎不是正确的方法。还有另一种方式吗?
您不需要类,但至少有静态字段或属性或移动实例。这是其中之一。
变量的范围现在仅在方法级别上,您无法从其他任何位置访问它。
这样做:
class Program
{
public static string Cats {get;private set;}
static void Main(string[] args)
{
然后叫它:
var c = Program.Cats;
您还可以将属性封装到类中并移动该实例。
答案 2 :(得分:1)
我认为这里的一些答案缺少一个有效点 - 程序必须是静态的,你的功能可能不应该是!
public class CatStuff
{
private int cats;
public CatStuff(int howManyCats)
{
this.cats = howManyCats;
}
public void TestMethod()
{
Console.WriteLine("{0} cats", this.cats);
}
}
class Program
{
static void Main(string[] args)
{
var cats1 = new CatStuff(1000);
cats1.TestMethod();
var cats2 = new CatStuff(6);
cats2.TestMethod();
}
}
答案 3 :(得分:0)
您可以在类级别定义变量,因此它们的范围限定为整个类:
class Program
{
private static string cats;
static void Main(string[] args)
{
cats = "1000 Cats";
test_method();
cats = "6 Cats";
test_method();
}
static void test_method()
{
Console.Write(cats);
}
}
因为您在静态方法中使用它,所以请确保您的字段也是静态的,因为不允许静态方法访问和实例字段。
答案 4 :(得分:0)
在static string cats;
课程中声明Program
:
class Program
{
static string cats;
static void Main(string[] args)
{
cats = "1000 Cats";
test_method();
cats = "6 Cats";
test_method();
}
static void test_method()
{
Console.Write(cats);
}
}
通过cats
类
static
方法都可以访问和使用Program
{/ 1}}