C# 编译中的错误:错误 1 使用未赋值的局部变量

本文关键字:错误 局部变量 赋值 编译 | 更新日期: 2023-09-27 18:17:25

我得到两个错误,我看到它们在哪里,我只是不知道如何更改代码以满足我的需求。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace zaidimas
{
    public partial class Form1 : Form
    {
        public int z1 = 1;
        public int z2 = 1;
        public int kauliukas;
        public string nuoroda;
        public Form1()
        {
            InitializeComponent();
            button2.Visible = false;
            button1.Visible = true;
            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
            webBrowser1.Navigate("siauliaicity.99k.org/zaidimas/");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // Gaunama kauliuko reikšmė
                int kauliukas = RandomNumber(1, 6);
                pictureBox1.ImageLocation = kauliukas + ".jpg";
                label2.Text = "Kauliukas ridenos ridinėjosi ir sustojo ties" + kauliukas + "taškais";

                int z1 = z1 + kauliukas; (first error goes here)
                string nuoroda = "http://siauliaicity.99k.org/zaidimas/index.php?z=1&z1=" + z1 + "&z2=" + z2 + "&plus=" + kauliukas;
                webBrowser1.Navigate(nuoroda);
                button1.Visible = false;
                button2.Visible = true;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            // Gaunama kauliuko reikšmė
            int kauliukas = RandomNumber(1, 6);
            pictureBox1.ImageLocation = kauliukas + ".jpg";
            label2.Text = "Kauliukas ridenos ridinėjosi ir sustojo ties" + kauliukas + "taškais";
            int z2 = z2 + kauliukas; (second error goes here)
            string nuoroda = "siauliaicity.99k.org/zaidimas/index.php?z=2&z1=" + z1 + "&z2=" + z2 + "&plus=" + kauliukas;
            webBrowser1.Navigate(nuoroda);
            button1.Text = "Ridenti kauliuką! (Ridena: Pirmasis žaidėjas)";
            button2.Visible = false;
            button1.Visible = true;
        }
        // Kauliuko funkcija
        private int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
        }
    }
}

错误消息的:

错误 1 使用未赋值的局部变量 'z1' C:''Users''Tutis''Documents''Visual Studio 2008''Projects''zaidimas''zaidimas''Form1.cs 38 26 zaidimas

错误 2 使用未赋值的局部变量 'z2' C:''Users''Tutis''Documents''Visual Studio 2008''Projects''zaidimas''zaidimas''Form1.cs 52 22 zaidimas

任何建议如何更改代码?

C# 编译中的错误:错误 1 使用未赋值的局部变量

您已经声明了名称为 z1 的变量,并且z2无法再次声明它们

我想你想使用相同的变量,但你不小心把int放在启动

改变

int z1 = z1 + kauliukas; (first error goes here)

z1 = z1 + kauliukas; (first error goes here)

 int z2 = z2 + kauliukas; (second error goes here)

 z2 = z2 + kauliukas; (second error goes here)

您正在重新声明变量。

改变:

int z1 = z1 + kauliukas;

自:

z1 = z1 + kauliukas;

并更改:

int z2 = z2 + kauliukas;

自:

z2 = z2 + kauliukas;

可以直接这样使用

z1 = z1 + kauliukas;

 z2 = z2 + kauliukas; 

您将公共变量重新声明为点击事件中的局部变量,请将收到错误的行更改为:

this.z1 += kauliukas
this.z2 += kauliukas

这会将新值分配给您的公共变量。

另外,对随机数代码的另一个建议 - 不要重新创建要生成随机数new Random(),每个线程使用相同的实例更可靠,如果使用static变量进行多线程处理,例如

private Random random = new Random();
...
private int RandomNumber(int min, int max)
{
    return this.random.Next(min, max);
}

有关详细信息,请参阅有关随机数的这篇文章。

var z1 = this.z1 + kauliukas;
var z2 = this.z2 + kauliukas;

您需要告诉编译器什么是实例字段,什么是局部变量。

您尚未在该范围内分配任何值。

你在button_click中创建一个局部变量,并尝试将其设置为自身。您可以在 z1 之前删除 int。

int z1 = z1 + kauliukas;和/或int z2 = z2 + kauliukas;的意义是什么?

只需做一个作业 - 即像这样:

int z1 = kauliukas;

int z2 = kauliukas;

或者以不同的方式命名局部变量:

int z1l = z1 + kauliukas;

int z2l = z2 + kauliukas;

顺便说一句:你的代码有点奇怪 - 为什么你命名的局部变量与字段(z1z2kauliukasnuoroda(相同?

编辑 - 评论后:

只需将int排除在外:

z1 = z1 + kauliukas;
z2 = z2 + kauliukas;

好吧,你有办法让它工作,但对我来说,你真正的问题是

公共 int z1;

你不应该公开这样的成员变量。

public int z1 {get;set;}

会更好,但考虑到你正在做的事情,我会选择旧风格。

private int _z1;
public int z1 {get {return _z1;} set {_z1 = value;}

然后

int z1 = _z1 + kauliukas;

会帮助你,更不用说下一个必须阅读你的代码的可怜的笨蛋了;

突出,因为您可以为局部变量指定与成员相同的名称并不意味着您应该这样做。

初始化方法中的变量。您已经在类中声明了kauliukas, z1 ,z2字段,并在创建具有相同名称的局部变量int kauliukas = ...编写。因此,在您的 buutton1 和 button2 单击事件处理程序中使用 kauliukas = RandomNumber(1, 6);z1 = z1 + kauliukas;,而不使用int