C#,在方法中使用主变量而不传递参数?
如何在另一个方法中使用Main中声明的变量/常量? 不需要像这样传递它:C#,在方法中使用主变量而不传递参数?,c#,C#,如何在另一个方法中使用Main中声明的变量/常量? 不需要像这样传递它:静态字符串my\u方法(字符串my\u变量\u to\u pass) 只需使用static void my_method() 我想要的是将任何其他方法调用到Main中,它必须使用Main中声明的变量 我也不想使用公共静态类,因为它似乎不是正确的方法。 还有别的办法吗 这是我想要的一个例子。此代码不起作用,因为test_方法()中的“cats不存在于当前竞争中”。 但是,我如何才能使它在不添加太复杂的代码的情况下工作呢 usi
静态字符串my\u方法(字符串my\u变量\u to\u pass)
只需使用static void my_method()
我想要的是将任何其他方法调用到Main中,它必须使用Main中声明的变量
我也不想使用公共静态类,因为它似乎不是正确的方法。
还有别的办法吗
这是我想要的一个例子。此代码不起作用,因为test_方法()中的“cats不存在于当前竞争中”。
但是,我如何才能使它在不添加太复杂的代码的情况下工作呢
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);
}
}
我也不想使用公共静态类,因为它似乎不是正确的方法。还有别的办法吗
您不需要类,但至少需要一个静态字段或属性,或者移动一个实例。这是其中之一
变量的作用域现在仅在方法级别上,您不能从其他任何地方访问它
这将有助于:
class Program
{
public static string Cats {get;private set;}
static void Main(string[] args)
{
那就叫它:
var c = Program.Cats;
您还可以将属性封装到一个类中,并移动该实例
我也不想使用公共静态类,因为它似乎不是正确的方法。还有别的办法吗
您不需要类,但至少需要一个静态字段或属性,或者移动一个实例。这是其中之一
变量的作用域现在仅在方法级别上,您不能从其他任何地方访问它
这将有助于:
class Program
{
public static string Cats {get;private set;}
static void Main(string[] args)
{
那就叫它:
var c = Program.Cats;
您还可以将属性封装到一个类中并移动该实例。您可以在类级别定义变量,以便将变量的作用域限定到整个类:
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);
}
}
由于您在静态方法中使用此字段,请确保您的字段也是静态的,因为您的静态方法将不允许访问和实例字段。您可以在类级别定义变量,因此它们的作用域为整个类:
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);
}
}
由于您在静态方法中使用此字段,请确保您的字段也是静态的,因为您的静态方法将不允许访问和实例字段
我想要的是将任何其他方法调用到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);
}
}
我想要的是将任何其他方法调用到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);
}
}
声明
静态字符串cats代码>在程序中
类:
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
就可以被程序
类中定义的任何静态
方法访问和使用代码>在程序中
类:
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
可以被程序
类中定义的任何静态
方法访问和使用我认为这里的许多答案缺少一个有效点-程序必须是静态的,您的功能可能不应该是静态的
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();
}
}
我认为这里的一些答案缺少一个有效点——程序必须是静态的,您的功能可能不应该是静态的
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();
}
}
那么为什么不使用私有静态呢?将cats
作为参数传递,或者将其设置为类作用域。将“cats”设置为程序中的静态变量类我也不想使用公共静态类,因为它似乎不是正确的方法
-正确的在本例中,方法是将其作为参数传递。所以在提到两种方法之后,您会问是否有一种方法可以做到这一点。显然你已经知道怎么做了。为什么不使用私有静态类呢?将cats
作为参数传递,或者将其设置为类范围的字段。将“cats”设置为程序中的静态变量类我也不想使用公共静态类,因为它似乎不是正确的方式
-正确的在本例中,方法是将其作为参数传递。所以在提到两种方法之后,您会问是否有一种方法可以做到这一点。显然你已经知道怎么做了。唯一一个指出在方法体之外访问局部变量是不可能的人)@SergeyBerezovskiy,这完全是错误的。闭包特别允许这样做。@Servy是的,这是真的,尽管我认为这与这个问题无关。@Kapol这是解决这个问题的糟糕方法,当然。这并不能改变这个事实,即答案在其声明中是错误的。@SergeyBerezovskiy不,那是错误的。闭包特别允许您访问方法体外部的局部变量,而不仅仅是值。您可以获取值、设置值、获取变量引用等。闭包关闭变量,而不是值。唯一指出在方法体之外访问局部变量是不可能的人)@SergeyBerezovskiy这完全是错误的。闭包特别允许这样做。@Servy是的,这是真的,尽管我认为这与这个问题无关。@Kapol这是解决这个问题的糟糕方法,当然。这并不能改变这个事实,即答案在其声明中是错误的。@SergeyBerezovskiy不,那是错误的。闭包特别允许您访问方法体外部的局部变量,而不仅仅是值。您可以获取值、设置值、获取变量引用等。闭包关闭变量,而不是值。