C# 字段初始值设定项无法引用非静态字段、方法或属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 字段初始值设定项无法引用非静态字段、方法或属性相关的知识,希望对你有一定的参考价值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Diagnostics;
namespace 自己的扑克牌应用1
public enum Suit
club,
diamond,
heart,
spade
public enum Rank
one = 1,
two,
three,
four,
five,
six,
seven,
eight,
nine,
ten,
jack,
queen,
king
public class Card:CollectionBase
private Suit suit;
private Rank rank;
public void add(Card z)
List.Add(z);
public void remove(Card d)
List.Remove(d);
public Card this[int deckindex]
get
return (Card)List[deckindex];
set
List[deckindex] = value;
public Card()
Console.WriteLine("错误");
public Card(Suit newsuit,Rank newrank)
suit=newsuit;
rank=newrank;
public override string ToString()
return "mycard is"+suit+"of"+rank;
public class Deck
Suit j=Suit.club;
Rank z = Rank.eight;
Card re = new Card(j, z);///////////////////////////////这句出现问题:C# 字段初始值设定项无法引用非静态字段、方法或属性
public Deck()
for (int j = 0; j < 4; j++)
for (int z = 1; z <= 13; z++)
re.add(new Card((Suit)j, (Rank)z));/////----------------jz是整形 所以要强制转换为suit rank型
//new Card((Suit)j, (Rank)z));
public Card ret(int i)
return re[i];
class Program
static void Main(string[] args)
Deck de = new Deck();
int i;
while(true)
try i = Convert.ToInt32(Console.ReadLine());
catch
Console.WriteLine("请输入数字");
continue;
if (i < 52)
break;
else
Console.WriteLine("请输入范围内数字");
continue;
Console.WriteLine(de.ret(i));
Console.ReadKey();
Card re = new Card(Suit.club, Rank.eight);
即可! 参考技术A 1218胡撒气金丝雀 参考技术B 你们和谁去玩啊,我真的不知道啊
C#变量初始化问题:字段初始值无法引用非静态字段方法或属性
问题:字段初始值设定项无法引用非静态字段、方法或属性的问题
下面代码出错的原因,在类中定义的字段为什么不能用?
public class Test
{
public Test()
{
}
public int Age=23;
public int temp = Age;//ERROR 字段初始值设定项无法引用非静态字段、方法或属性
}
C#规定在类内部只能定义属性或者变量,并初始化,不能直接变量引用变量。
在初始化类实例之前就调用了字段
c# 中字段的初始化先于构造函数。
string y = "asdf" + x; 实际上是 y = "asdf" + this.x;
因为这时this还没被初始化,所以编译会报错。
属性内存和变量内存的分配的时间不一样。
属性是用的时候分配,变量是在类初始化时候分配。
以上是关于C# 字段初始值设定项无法引用非静态字段、方法或属性的主要内容,如果未能解决你的问题,请参考以下文章