我不知道为什么这段代码无效。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace po
{
public delegate void godmode(int a, int b, out int c, out int d);
public class Class1
{
public int a;
public int b;
public int c;
}
public class Program
{
Class1 myclass = new Class1();
Program pro = new Program();
// myclass.a didnt work
static void go1(int a, int b, out int c, out int d)
{
c = a + b;
d = (a + b) * 10;
}
static void go2(int a, int b, out int c, out int d)
{
c = a;
d = b;
}
static void go3(int a, int b, out int c, out int d)
{
c = a * 100;
d = b * 200;
}
static int outofgod(int a,out int result1,out int result2, godmode beaman)
{
int b = a*2;
int c = a*3;
int re1, re2;
beaman(b,c,out re1,out re2);
result1 = re1 * 10;
result2 = re2;
}
static void Main(string[] args)
{
int a = 1;
int b = 2;
int c = 0;
int d = 0;
Console.WriteLine("a = {0}.....b = {1}..... c = {2}.... d = {3}",a,b,c,d);
godmode mode1;
godmode mode2;
godmode mode3;
mode1 = new godmode(go1);
mode2 = new godmode(go2);
mode3 = new godmode(go3);
outofgod(a,out c,out d,mode1);
Console.WriteLine("a = {0}.....b = {1}..... c = {2}.... d = {3}", a, b, c, d);
outofgod(a, out c, out d, mode2);
Console.WriteLine("a = {0}.....b = {1}..... c = {2}.... d = {3}", a, b, c, d);
outofgod(a, out c, out d, mode3);
Console.WriteLine("a = {0}.....b = {1}..... c = {2}.... d = {3}", a, b, c, d);
}
}
}
**
myclass是Class1的isntanc。所以我想使用一个实例“myclass”。 但是当我输入myclass时,什么都没有出现。
答案 0 :(得分:0)
你的方法是静态的。您无法从静态方法访问非静态字段。
static void YourMethod(....) // notice static keyword
{
}
要解决此问题,您可以创建myclass静态字段。
static Class1 myclass = new Class1();
答案 1 :(得分:0)
您可以像这样使用它
public static class Class1
{
public static int a;
public static int b;
public static int c;
}
然后你可以访问像
这样的变量Class1.a
因为如果你通常尝试这样做将是
非静态字段,方法或者需要对象引用 财产' myclass'
答案 2 :(得分:0)
myClass是一个“实例变量”,因为Program类不是静态的。此外,由于您的方法是静态的,您无法访问实例变量,您应该这样做:
public class Program
{
Class1 myClass = new Class1();
public Class1 MyClass{get{return myClass;}}
}
static void godmode()
{
Program p = new Program();
var myClass = p.MyClass;
}
但它很糟糕。因此,如果你想使用Class1,你必须在静态方法中实例化它。