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();


你对Enum的使用有点模糊,把那句错误的话直接写成:
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# 字段初始值设定项无法引用非静态字段、方法或属性的主要内容,如果未能解决你的问题,请参考以下文章

C# 字段初始值设定项无法引用非静态字段、方法或属性

C#变量初始化问题:字段初始值无法引用非静态字段方法或属性

[C#]变量初始化问题:字段初始值无法引用非静态字段方法或属性

字段初始值设定项无法引用非静态字段、方法或属性

字段初始值设定项无法引用非静态字段、方法或属性

字段初始值设定项不能引用非静态字段、方法或属性