WCF生成6个随机抽奖号码,它在wcf服务上以数组形式返回它们,但是我无法将其打印到表单上的标签上。
如果我尝试将其打印到消息框中,我会得到“值无法解析为类型int32”
我尝试在逻辑上形成一个新的数组,形式为array = service array,因为它返回一个数组服务应该是一个数组不应该吗?我得到的不能隐式地将int类型转换为int []
我在这里:
IService
public interface ILottoService
{
[OperationContract]
int[] GenerateLottoDrawNums();
[OperationContract]
int[] GenerateIrishLottoNums();
}
服务
public int[] GenerateLottoDrawNums()
{
int min = 1;
int max = 59;
int[] randomNums = new int[6];
Random rand = new Random();
for (int i = 0; i < randomNums.Length; i++)
{
int tempNum = rand.Next(min, max);
while (IsDuplicate(tempNum, randomNums))
{
tempNum = rand.Next(7);
}
randomNums[i] = tempNum;
}
return randomNums;
}
public Boolean IsDuplicate(int tempNum, int[]randomNums)
{
foreach (var item in randomNums)
{
if (item == tempNum)
{
return true;
}
}
return false;
}
}
}
形成
public partial class FrontEnd : Form
{
LottoServiceReference.LottoServiceClient ws = null;
public FrontEnd()
{
InitializeComponent();
}
private void FrontEnd_Load(object sender, EventArgs e)
{
ws = new LottoServiceReference.LottoServiceClient();
}
private void btnLottoDraw_Click(object sender, EventArgs e)
{
try
{
int[] LottoDrawNums = new int[6];
for (int i = 0; i < LottoDrawNums.Length; i++)
{
LottoDrawNums[i] = ws.GenerateLottoDrawNums();
lblNum1.Text = String.Join(",", LottoDrawNums.ToString());
MessageBox.Show(String.Join(",", ws.GenerateLottoDrawNums()));
Console.WriteLine(String.Join(",", ws.GenerateLottoDrawNums()));
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
}
猜猜我错过了一些[]或int []?
我的大学导师无法帮助,她把我介绍给你们。说“它认为它是一个int而它不是。尝试转换为String或List然后打印。她用Google搜索并发现了一个关于转换的Stack Overflow问题但是我没有保存它并且无法在家中找到它。
谢谢。
这段代码
for(int i = 0; i < LottoDrawNums.Length; i++)
{
lblNum1.Text = LottoDrawNums[0].ToString();
}
设置只是数组到标签的第一个位置。
试试String.Join https://docs.microsoft.com/en-us/dotnet/api/system.string.join?view=netframework-4.7.2
LblNum1.Text = String.Join(" , ", LottoDrawNums);
这将返回类似“3,45,6,54,56,7,45”的内容
也可以在MessageBox.Show(String.Join(" , ", ws.GenerateLottoDrawNums()));
中使用它
GenerateLottoDrawNums和IsDuplicate方法工作正常!
尝试使用StringBuilder,如下所示:
StringBuilder sb = new StringBuilder ();
For each element in array:
sb.Append($"{element} ,")
String arrayAsString = sb.ToStirng(0, sb.Length-2);
LblNum1.Text = arrayAsString;
MessageBox.Show(arrayAsString);
此外,我认为您缺少IService定义之上的服务合同属性