使用 var 从一种方法到另一种方法
Use a var from one method into a different one
为了学校,我需要创建一个洗牌和分牌的程序。
我想从一个方法(void)中获取一个变量returned。但因为它在 Void 中,所以它不能。但是,如果我在 Void 之外创建它,则会出现错误。因为它是一个变量。我从那个 var 做了一个列表。
我对 C# 有点陌生。非常感谢您的帮助。
public static class Kaart
{
public static void Kaarten() {
string s = "";
string v = "";
string k = "";
string kaart = "";
var deck = new List<string>();
for (int x = 0; x < 4; x++)
{
switch (x)
{
case 0: s = "Harten"; break;
case 1: s = "Klaver"; break;
case 2: s = "Schoppen"; break;
case 3: s = "Ruiten"; break;
}
for (int y = 0; y < 13; y++)
{
switch (y)
{
case 0: v = "A"; break;
case 1: v = "2"; break;
case 2: v = "3"; break;
case 3: v = "4"; break;
case 4: v = "5"; break;
case 5: v = "6"; break;
case 6: v = "7"; break;
case 7: v = "8"; break;
case 8: v = "9"; break;
case 9: v = "10"; break;
case 10: v = "Boer"; break;
case 11: v = "Koningin"; break;
case 12: v = "Koning"; break;
}
kaart = k + " " + s + " " + v;
deck.Add(kaart);
}
Shuffle(deck);
}
}
public static Shuffle(List<string> deck)
{
Random rng = new Random();
//Shuffled het deck;
var shuffledDeck = deck.OrderBy(a => rng.Next()).ToList();
return shuffledDeck;
}
}
用这段代码Shuffle会报错说他没有return。我真的不知道该怎么办了
您已经像这样定义了您的 Shuffle
方法:
public static Shuffle(List<string> deck)
在 C# 中,方法需要在方法名称之前有一个 return 类型。将声明更改为:
public static List<string> Shuffle(List<string> deck)
此外,您可能想要创建一个简单的 class 来表示 Card
:
public class Card
{
public Card(int color, int val)
{
Color = color;
Value = val;
}
public int Color { get; }
public int Value { get; }
// That might look nicer in the debugger (with less code).
public override string ToString()
{
return "♥♣♦♠"[Color] + "A23456789TNQK"[Value];
}
}
而且我不确定,如果你的课程也(有点)关于面向对象,但你可能想实现静态方法 Card.GetDeck()
返回卡片列表(或数组)。
为了学校,我需要创建一个洗牌和分牌的程序。
我想从一个方法(void)中获取一个变量returned。但因为它在 Void 中,所以它不能。但是,如果我在 Void 之外创建它,则会出现错误。因为它是一个变量。我从那个 var 做了一个列表。 我对 C# 有点陌生。非常感谢您的帮助。
public static class Kaart
{
public static void Kaarten() {
string s = "";
string v = "";
string k = "";
string kaart = "";
var deck = new List<string>();
for (int x = 0; x < 4; x++)
{
switch (x)
{
case 0: s = "Harten"; break;
case 1: s = "Klaver"; break;
case 2: s = "Schoppen"; break;
case 3: s = "Ruiten"; break;
}
for (int y = 0; y < 13; y++)
{
switch (y)
{
case 0: v = "A"; break;
case 1: v = "2"; break;
case 2: v = "3"; break;
case 3: v = "4"; break;
case 4: v = "5"; break;
case 5: v = "6"; break;
case 6: v = "7"; break;
case 7: v = "8"; break;
case 8: v = "9"; break;
case 9: v = "10"; break;
case 10: v = "Boer"; break;
case 11: v = "Koningin"; break;
case 12: v = "Koning"; break;
}
kaart = k + " " + s + " " + v;
deck.Add(kaart);
}
Shuffle(deck);
}
}
public static Shuffle(List<string> deck)
{
Random rng = new Random();
//Shuffled het deck;
var shuffledDeck = deck.OrderBy(a => rng.Next()).ToList();
return shuffledDeck;
}
}
用这段代码Shuffle会报错说他没有return。我真的不知道该怎么办了
您已经像这样定义了您的 Shuffle
方法:
public static Shuffle(List<string> deck)
在 C# 中,方法需要在方法名称之前有一个 return 类型。将声明更改为:
public static List<string> Shuffle(List<string> deck)
此外,您可能想要创建一个简单的 class 来表示 Card
:
public class Card
{
public Card(int color, int val)
{
Color = color;
Value = val;
}
public int Color { get; }
public int Value { get; }
// That might look nicer in the debugger (with less code).
public override string ToString()
{
return "♥♣♦♠"[Color] + "A23456789TNQK"[Value];
}
}
而且我不确定,如果你的课程也(有点)关于面向对象,但你可能想实现静态方法 Card.GetDeck()
返回卡片列表(或数组)。