字段初始化器不能使用委托引用非静态字段
本文关键字:字段 引用 静态 初始化 不能 | 更新日期: 2023-09-27 18:13:06
我是c#新手。我正在学习更多关于代表的知识。当我运行这段代码时,我得到以下错误:
字段初始化项不能在以下行引用非静态字段:
CalArepointer cpointer = CalculateArea;
下面是我的程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace calculatearea
{
class Program
{
delegate double CalArepointer(int r);
CalArepointer cpointer = CalculateArea;
static void Main(string[] args)
{
double area = cpointer.Invoke(20);
Console.ReadKey();
}
double CalculateArea(int r)
{
return 3.14 * r * r;
}
}
}
您应该在Main
方法的静态上下文中初始化cpointer
的值,因为在那里您将使用它:
class Program
{
delegate double CalArepointer(int r);
CalArepointer cpointer;
static void Main(string[] args)
{
cpointer = CalculateArea;
double area = cpointer.Invoke(20);
Console.ReadKey();
}
double CalculateArea(int r)
{
return 3.14 * r * r;
}
}
为了在main方法之外初始化cpointer
的值,您希望使用Static
成员
class Program
{
delegate double CalArepointer(int r);
static CalArepointer cpointer = CalculateArea;
static double CalculateArea(int r)
{
return 3.14 * r * r;
}
static void Main(string[] args)
{
double area = cpointer.Invoke(20);
Console.WriteLine(area);
Console.ReadKey();
}
}