2013-10-20 52 views
-4
namespace ConsoleApplication 
{ 

    class Program 
    { 
     static void Main() 
     { 
      int val = 10; 
      fnctest(val); 
      Console.WriteLine(val); 
     } 
     void fnctest(int val) 
     { 
      val = 200; 
     } 
    } 
} 

我正在一個錯誤:對象引用需要非靜態字段,方法或屬性「ConsoleApplication

An object reference is required for the non-static field, method, 
or property 'ConsoleApplication' 

我能做些什麼來解決這個問題?

+0

閱讀理解本文和鏈接的文章http://msdn.microsoft.com/zh-cn/library/aa645766(v=vs.71).aspx – dkackman

回答

4

制定您的fnctest方法static或實例化您的課程並調用您的方法。

static void Main() 
{ 
    int val = 10; 
    fnctest(val); 
    Console.WriteLine(val); 

} 
static void fnctest(int val) 
{ 
    val = 200; 
} 

或者

static void Main() 
{ 
    int val = 10; 
    Program p = new Program(); 
    p.fnctest(val); 
    Console.WriteLine(val); 

} 
void fnctest(int val) 
{ 
    val = 200; 
} 

Plesae閱讀Static Classes and Static Class Members (C# Programming Guide)

0

聲明fncteststatic

像這樣

public static void fnctest(int val) 
{ 
    val = 200; 
} 

BTW(與問題無關):

我想你試圖找到值類型和引用類型之間的區別。 val值在方法中改變,然後打印以查看其值是否有任何變化。在這種情況下,您還應該瞭解out參數。

0

主要方法是靜態的,因此你只能叫從主靜態方法..

你也應該櫃面你想改變傳遞給方法

所以原值按引用傳遞參數,你的方法應該是

static void fnctest(ref int val) 
{ 
    val = 200; 
} 

你的方法調用應該是

fnctest(ref val); 
相關問題