Re: [問題] class 跟 struct
真的是 字母 字元集 嗎?
如果是的話.......
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
→
03/19 16:03, , 1F
03/19 16:03, 1F
→
03/19 16:43, , 2F
03/19 16:43, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):