大家安 最近才開始學程式設計
這作業的其中一個目標是做出一個按鈕讓兩個label的內容互換
我選擇用temp存一個字串 想要藉此交換兩個label的內容
按幾下還沒問題 多按幾下就會有"System.windows.Forms.label, Text"的內容出現
我記得這段應該是在指定的label沒有訊息時才會出現的 所以有點不解
希望有人能幫我解惑下
感謝
public partial class Form1 : Form
{
string temp = "日期:" + DateTime.Now.ToLongDateString();
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "日期:" + DateTime.Now.ToLongDateString();
label2.Text = "時間:" + DateTime.Now.ToLongTimeString();
label3.Text = "起來嗨";
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = label2.ToString();
label2.Text = temp;
temp = label1.ToString();
}
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = label2.ToString();
label2.Text = temp;
temp = label1.ToString();
}
1.前面是物件label1的Text屬性,後面是label2物件直接轉string。
2.temp的scope也錯了,沒必要不要用全域變數。上面的var temp不用。
private void button2_Click(object sender, EventArgs e)
{
var temp = label1.Text
label1.Text = label2.Text;
label2.Text = temp;
}
改成text就可以了 感謝
另外問一下 全域變數少用的原因是?
以你的例子為例,你把temp放在全域,實際上你要的功能,temp只需要在區域做就行。
那程式在執行區域完後,temp用不到了,或許有機會被做記憶體回收。
但放在全域呢?他會跟著程式從生到死。
另外程式如果一大起來,你變數都放全域,有些像temp這種常用的,你是不是還要去找其他名稱,來避免變數名稱重複?
有時候程式複雜起來,好幾十個function會需要存取這個全域變數,像temp這種又要讀又要寫的,很容易變成非預期的結果。
全域變數依我自己的習慣是盡量不要用,要不然就是盡量不要去變他。
能精準的控制變數生死,不會誤用,才是穩健的程式。
了解了 感謝
1.什麼額外的內容
2.建議貼程式碼, 不要截圖