C# 我无法访问类外的变量
我正在做一个21点项目 我首先为C# 我无法访问类外的变量,c#,C#,我正在做一个21点项目 我首先为Hit按钮创建了Hit类 因此,在表单上,当我单击它时,它将从switch case场景中检索一个值,该场景在hit类中随机化了一个数字/值 我尝试在GenerateID方法中的hit to=stRefID类下面创建一个变量,但也失败了;一切都是公开的,所以我很困惑 感谢您抽出时间来帮助我,因为这是我第一次在这里发帖,但我一直都在使用这个地方 Hit.cs: using System; using System.Collections.Generic; using
Hit
按钮创建了Hit
类
因此,在表单上,当我单击它时,它将从switch case场景中检索一个值,该场景在hit类中随机化了一个数字/值
我尝试在GenerateID
方法中的hit to=stRefID类下面创建一个变量,但也失败了;一切都是公开的,所以我很困惑
感谢您抽出时间来帮助我,因为这是我第一次在这里发帖,但我一直都在使用这个地方
Hit.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Blackjack
{
public class Hit
{
public static string GenerateID(int MinSize, int MaxSize)
{
string stRefID = "";
Random random = new Random();
int iChosenMaxSize = random.Next(0, 11);
int two = 2;
int three = 3;
int four = 4;
int five = 5;
int six = 6;
int seven = 7;
int eight = 8;
int nine = 9;
int ten = 10;
int jack = 10;
int queen = 10;
int king = 10;
int ace = 11;
for (int x = 1; x <= iChosenMaxSize; x++)
{
int iCharType = random.Next(0, 12);
switch (iCharType)
{
case 0:
stRefID += two;
break;
case 1:
stRefID += three;
break;
case 2:
stRefID += four;
break;
case 3:
stRefID += five;
break;
case 4:
stRefID += six;
break;
case 5:
stRefID += seven;
break;
case 6:
stRefID += eight;
break;
case 7:
stRefID += nine;
break;
case 8:
stRefID += ten;
break;
case 9:
stRefID += ace;
break;
case 10:
stRefID += jack;
break;
case 11:
stRefID += queen;
break;
case 12:
stRefID += king;
break;
}
} return stRefID;
}
}
}
我也尝试过将按钮公开,但失败了
输出的测试文本框:
private void test_TextChanged(object sender, EventArgs e)
{
}
亲切问候,,
迈克
修订守则:
namespace Blackjack
{
public class Hit
{
public static string GenerateID(string stRefID)
{
Random random = new Random();
int iChosenMaxSize = random.Next(0, 11);
int two = 2;
int three = 3;
int four = 4;
int five = 5;
int six = 6;
int seven = 7;
int eight = 8;
int nine = 9;
int ten = 10;
int jack = 10;
int queen = 10;
int king = 10;
int ace = 11;
for (int x = 1; x <= iChosenMaxSize; x++)
{
int iCharType = random.Next(0, 12);
switch (iCharType)
{
case 0:
stRefID += two;
break;
case 1:
stRefID += three;
break;
case 2:
stRefID += four;
break;
case 3:
stRefID += five;
break;
case 4:
stRefID += six;
break;
case 5:
stRefID += seven;
break;
case 6:
stRefID += eight;
break;
case 7:
stRefID += nine;
break;
case 8:
stRefID += ten;
break;
case 9:
stRefID += ace;
break;
case 10:
stRefID += jack;
break;
case 11:
stRefID += queen;
break;
case 12:
stRefID += king;
break;
}
} return stRefID;
}
}
}
名称空间21点
{
公课热门
{
公共静态字符串生成器ID(字符串stRefID)
{
随机=新随机();
int iChosenMaxSize=random.Next(0,11);
int 2=2;
int三=3;
int-four=4;
int 5=5;
int六=6;
int七=7;
int八=8;
int九=9;
int-ten=10;
int插孔=10;
int QUENE=10;
int-king=10;
int ace=11;
对于(intx=1;x不确定我是否完全理解
但是我可以看到stRefID
是一个变量local
到GenerateID
函数
如果您需要以Hit.stRefID
的身份访问它,那么stRefID
应该是静态类成员
尝试将stRefID
添加为全局Class
变量
public class Hit
{
public static string stRefID = "";
public static string GenerateID(int MinSize, int MaxSize)
{
//Your logic
}
不知道我是否完全理解
但是我可以看到stRefID
是一个变量local
到GenerateID
函数
如果您需要以Hit.stRefID
的身份访问它,那么stRefID
应该是静态类成员
尝试将stRefID
添加为全局Class
变量
public class Hit
{
public static string stRefID = "";
public static string GenerateID(int MinSize, int MaxSize)
{
//Your logic
}
无法访问在方法中定义的变量。stRefID的作用域严格位于GenerateID内。根据您的类,如果要访问stRefID的值,需要调用Hit。GenerateID
,这将返回stRefID的值。变量的作用域在C#中非常重要(与所有编程语言一样).我建议您查看一下您不能访问在方法中定义的变量。stRefID的作用域严格位于GenerateID内。根据您的类,如果您想访问stRefID的值,您需要调用Hit.GenerateID
,这将返回stRefID的值。变量的作用域在C#中非常重要(与所有编程语言一样)。我建议您看看您所做的是将stRefID
变量声明在方法GenerateID
的范围内,这将不起作用,因此您可以做的是将该变量放在类的范围内,然后您可以像这样使用它
namespace Blackjack
{
public class Hit
{
string stRefID = "";
public static string GenerateID(int MinSize, int MaxSize)
{
Random random = new Random();
int iChosenMaxSize = random.Next(0, 11);
int two = 2;
int three = 3;
int four = 4;
int five = 5;
int six = 6;
int seven = 7;
int eight = 8;
int nine = 9;
int ten = 10;
int jack = 10;
int queen = 10;
int king = 10;
int ace = 11;
for (int x = 1; x <= iChosenMaxSize; x++)
{
int iCharType = random.Next(0, 12);
switch (iCharType)
{
case 0:
stRefID += two;
break;
case 1:
stRefID += three;
break;
case 2:
stRefID += four;
break;
case 3:
stRefID += five;
break;
case 4:
stRefID += six;
break;
case 5:
stRefID += seven;
break;
case 6:
stRefID += eight;
break;
case 7:
stRefID += nine;
break;
case 8:
stRefID += ten;
break;
case 9:
stRefID += ace;
break;
case 10:
stRefID += jack;
break;
case 11:
stRefID += queen;
break;
case 12:
stRefID += king;
break;
}
} return stRefID;
}
名称空间21点
{
公课热门
{
字符串stRefID=“”;
公共静态字符串GenerateID(int MinSize,int MaxSize)
{
随机=新随机();
int iChosenMaxSize=random.Next(0,11);
int 2=2;
int三=3;
int-four=4;
int 5=5;
int六=6;
int七=7;
int八=8;
int九=9;
int-ten=10;
int插孔=10;
int QUENE=10;
int-king=10;
int ace=11;
对于(int x=1;x你所做的事情被声明为stRefID
变量在方法GenerateID
的范围内,这是行不通的,所以你能做的就是把这个变量放在类的范围内,然后你可以像这样使用它
namespace Blackjack
{
public class Hit
{
string stRefID = "";
public static string GenerateID(int MinSize, int MaxSize)
{
Random random = new Random();
int iChosenMaxSize = random.Next(0, 11);
int two = 2;
int three = 3;
int four = 4;
int five = 5;
int six = 6;
int seven = 7;
int eight = 8;
int nine = 9;
int ten = 10;
int jack = 10;
int queen = 10;
int king = 10;
int ace = 11;
for (int x = 1; x <= iChosenMaxSize; x++)
{
int iCharType = random.Next(0, 12);
switch (iCharType)
{
case 0:
stRefID += two;
break;
case 1:
stRefID += three;
break;
case 2:
stRefID += four;
break;
case 3:
stRefID += five;
break;
case 4:
stRefID += six;
break;
case 5:
stRefID += seven;
break;
case 6:
stRefID += eight;
break;
case 7:
stRefID += nine;
break;
case 8:
stRefID += ten;
break;
case 9:
stRefID += ace;
break;
case 10:
stRefID += jack;
break;
case 11:
stRefID += queen;
break;
case 12:
stRefID += king;
break;
}
} return stRefID;
}
名称空间21点
{
公课热门
{
字符串stRefID=“”;
公共静态字符串GenerateID(int MinSize,int MaxSize)
{
随机=新随机();
int iChosenMaxSize=random.Next(0,11);
int 2=2;
int三=3;
int-four=4;
int 5=5;
int六=6;
int七=7;
int八=8;
int九=9;
int-ten=10;
int插孔=10;
int QUENE=10;
int-king=10;
int ace=11;
对于(int x=1;x这是一个可变范围问题。如果他将stRefID设置为静态,则有可能在给它分配有用的值之前访问它。除此之外,除非他调用GenerateID
,该值将永远不会更改,它当前返回的stRefID值与他正在寻找的值相同。@TheGreatCO:Ya我可以看到范围问题。但我是我不知道他为什么要把按钮公诸于众。是的,我觉得差不多一样……然后我也不知道为什么GenerateID
也需要是静态的。@DimitarDimitrov:因为我们没有看到GenerateID
函数调用,所以很难猜测。@user2400333您没有设置静态stRefID。不仅如此,您的原始代码运行良好,只是使用不当。您需要调用GenerateID
并使用从中返回的值。您不需要静态类成员。这在许多级别的编码中都是不好的。这是一个可变范围问题。如果他将stRefID设为静态,他可能会在分配有用的val之前访问它最重要的是,除非他调用GenerateID
,当前返回stRefID的值,就像他正在寻找的一样,@TheGreatCO:Ye,我可以看到范围问题。但我不确定他为什么要尝试公开按钮
。是的,我几乎是一样的…然后再次不确定为什么基因rateID
也需要是静态的。@DimitarDimitrov:因为我们没有看到GenerateID
函数调用,所以很难做出正确的判断