作者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
1F:→ F23ko:感谢 ^^" 03/19 16:03
2F:→ MMAXo:ㄜ,要配合 PS 那样改 Get() 里面的 done = true 要拿掉 03/19 16:43