public class Program
{
public readonly string val; // THIS IS AN ERROR?
static void Main(string[] args)
{
// get parameter value
if (args.Length>0)
{
val = args[0];
你能告诉我们为什么我收到错误编译吗?将参数值放在const或readonly变量中的最佳方法是什么?
答案 0 :(得分:4)
这里有两点需要注意:
只读字段分配只能作为声明的一部分 或者在同一类的构造函数中。
您的字段是非静态的,而您的主要功能是静态的。您不能在静态上下文中设置非静态变量。非静态字段需要该类的实例。
我建议您将字段标记为静态,并为您要声明的变量指定值
应运行以下代码
public class Program
{
public static string val; // THIS IS AN ERROR?
static void Main(string[] args)
{
// get parameter value
if (args.Length>0)
{
Program.val = args[0];
答案 1 :(得分:1)
它与它所在的类无关。您只需要在声明或构造函数中使用值初始化它。 (因为它是readonly,你以后不能分配它。)
public readonly string val = "myString";
答案 2 :(得分:0)
您必须立即分配它的值。否则它怎么可能只读?"
答案 3 :(得分:0)
必须将readonly分配给声明或该类的构造函数内部。这就是它只读的原因。
也许你最好的选择就是这个
public string val {get; private set;}
这样它只能在Program类中设置。