作者MMAXo (充滿自信與信任)
看板C_Sharp
標題Re: [問題] class 跟 struct
時間Fri Mar 19 14:39:52 2010
真的是 字母 字元集 嗎?
如果是的話.......
1. char[] 有沒有滿足你的需求? @@
2. 其實他也等於你定義叫 "字母" 的 struct
然後宣告 字母[] myChars = new 字母[個數];
3. 如果要定義成 struct..
public struct SChar
{
// 建構子
public SChar(char c)
{
Data = c;
done = false;
}
// 記錄的資料
char Data;
// 是否被取走
bool done;
// 取值
public chat Get() { get { done = true; return Data; } }
// 是否被取走
public bool IsDone() { return done;}
// 要重來時設定
public void Regression() { done = false;}
}
PS. 可以把 public bool IsDone() { return done;}
改成 public bool IsDone() { done = !done; return !done;}
這樣 問一次 IsDone() 就可以順便修改 done
Regression() 可以拿掉
※ 引述《F23ko (純潔)》之銘言:
: 自己寫的小程式
: 能把輸入的字母做排列組合
: EX:
: 輸入:ABB
: 輸出:ABB BAB BBA
: http://www.badongo.com/file/21299172
: 裡面定義一個叫做字母的class
: 用來記錄使用者輸入的字母,以及上層遞迴是否有「取走」這個字母
: public class 字母
: {
: public char 字母元件;
: public bool 被取走;
: public 字母(char a)
: {
: 字母元件 = a;
: 被取走 = false;
: }
: public void 拿走()
: {
: 被取走 = true;
: }
: public void 放回()
: {
: 被取走 = false;
: }
: }
: 之後,會建立一個List<字母>欄位,並在建構子把使用者輸入的字母放進去
: List<字母> 取樣陣列 = new List<字母>();
: public 字元排列(string 字元集)
: {
: foreach (char 輸入字母 in 字元集)
: {
: 取樣陣列.Add(new 字母(輸入字母));
: }
: }
: for (int i = 0; i < 取樣陣列.Count; i++)
: {
: (中略)................
: 取樣陣列.ElementAt(i).拿走();
: (中略)................
: }
: 在這裡,把class改成struct會造成錯誤
: 在執行「取樣陣列.ElementAt(i).拿走();」時
: public bool 被取走; 並不會變成true
: 我在想.... 可能是struct是實質類型、class是參考類型的關係
: 我想請問,如果在這種狀況下,硬要把「字母」定義成struct
: 要怎麼寫?
--
▲ ▲▲▲
▄▇▃▂▁ ▁▂▃▇▄
▃▆
◢ ■ ◣▆▃
╦ ╗█▇▆▃▁▄ ▄▁▃▅▆▇╔╗
◢█
█◣∥◢█▇█
◣ ║ ║ ╦ ╔╗ ╦╗ ╦ ╔ ╗
█◣▲ ▼▼
▼▼ ▲◢█ ║ ║ ║ ╠╣ ╠ ╗ ║ ║ ║
◥█◤◥▲
▲▲◤◥█◤ ║ ║ ╩ ╩ ╩ ╩ ╝ ╩ ╝╚ ╝
ψyzelly ◤ ◥ ╩ ╝▁▂▃▄▆▄ ▄ ▄▃▂▁╚╝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.142.155
→ F23ko:感謝 ^^" 03/19 16:03
→ MMAXo:ㄜ,要配合 PS 那樣改 Get() 裡面的 done = true 要拿掉 03/19 16:43