[英]'Object reference is required for non-static field' error in console application
我在控制台應用程序中收到以下語法錯誤:
非靜態字段、方法或屬性“ConsoleApplication1.Program.db”需要對象引用
我怎樣才能解決這個問題? 我已經閱讀了關於使db
靜態的建議,但我並不完全理解。
class Program
{
private CallContext db = new CallContext();
private BreachContext bc = new BreachContext();
static void Main(string[] args)
{
var snapshot = db.Calls.Where(x => x.team == "T1").ToList();
您正在創建CallContext
的實例,但僅當您創建Program
的實例時。
但是, Main
是靜態的,不需要Program
的實例,因此在Main
運行時不會實例化db
。
當你需要它時,我只是在Main 中實例化它。 如果它是一次性的,您也可以考慮將其包裝在using
語句中。
static void Main(string[] args)
{
var db = new CallContext();
var snapshot = db.Calls.Where(x => x.team == "T1").ToList();
我假設你有一個很好的理由讓它成為一個全局變量(也許你也在其他操作中使用它),所以如果你真的想要這個,db 聲明也應該是靜態的:
private static CallContext db = new CallContext();
原因:您在靜態Main
方法中使用非靜態db
變量,這是不可能的。
但是,如果沒有理由將其設為全局和靜態,也可以將聲明和初始化放在 Main 方法本身中,然后使用它。 我假設CallContext
是一個實體框架上下文,因此在這種情況下,使用using
語句在使用后處理它:
static void Main(string[] args)
{
using (var db = new CallContext())
{
var snapshot = db.Calls.Where(x => x.team == "T1").ToList();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.