PIXNET Logo登入

遊戲人生 人生遊戲

跳到主文

如果工作是玩樂就太好了

部落格全站分類:攝影寫真

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 11月 17 週三 201010:15
  • C# TcpClient record

TcpClient.Connected 屬性

取得值,指出 TcpClient 的基礎 Socket 是否已連接至遠端主機。

屬性值

如果最近一次的作業是將 Client 通訊端連接至遠端資源,則為 true,否則為 false。

Connected 屬性會取得上次 I/O 作業的 Client 通訊端連接狀態。當它傳回 false 時,即表示 Client 通訊端不是從未連接過,就是不再連接了。

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(2,685)

  • 個人分類:C#
▲top
  • 11月 16 週二 201019:53
  • Game 社交遊戲必須具備的10大基本元素

在虛擬交易峰會倫敦站上,GameDuell聯合創始人Michael Kalkowski向開發者和用戶剖析了facebook排名前25款社交遊戲共有的一些基本元素,而這些可以用以協助其他的開發者提高他們在社交遊戲領域的虛擬成交額度。

  畢竟虛擬交易所創造的收益是社交遊戲目前營收的主要途徑,據Michael Kalkowski分析現在整體遊戲的虛擬營收總值將高達750億美元。

  以下是Michael Kalkowski認為一款成功的社交遊戲必須具備的10大基本元素。

  10,用戶日反現分紅(類似賭場伎倆)

  這個主要是用於對用戶進行收益反現優惠,比如說BejeweledBlitz的用戶就能夠在該款遊戲中有一定的機率去贏取遊戲每天向用戶做的一些反現的優惠。這些伎倆是賭場中最常見的一些方式(有永遠的輸家,就沒有永遠的客戶),當這些手法也進入社交遊戲的時候可以對用戶粘性帶來更積極的影響。

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(1,145)

  • 個人分類:Game
▲top
  • 11月 10 週三 201017:44
  • C++ inline

inline 這個關鍵字是使用在function前面
inline 所宣告的function並不會有程式本體 
而是像巨集(define)一樣 會直接展開到呼叫他的地方


inline的優點
在類別(class)中 我們常需要使用一個function將一個變數傳出去 比方說 




int CMyClass::GetValue()
{
  return m_nValue;
} 


我們知道 function的呼叫 是非常花CPU時間的 而function裡面卻只有傳回一個數值而已
這樣的動作 對於CPU的使用非常沒有效率 
當然 我們可以將這個變數改成public 讓其他人直接來存取
不過這是一個不好的寫法
比較好的寫法是使用inline function 來解決這個問題
經過inline所宣告的function會直接展開在程式碼內
所編出來程式碼就會直接去存取那個參數 省略了呼叫function的時間浪費




inline與#define的比較
inline 其實就是將一個function直接展開到程式碼內
這樣的功能 透過巨集也可以達到 不過巨集跟inline還是有些差異的
1. 巨集當然不可能將public以外的變數傳出去 inline可以
2. 巨集跟inline有時候結果會不同 如下所示
#define D_TRIPLE(n) (n+n+n)


int GetValue();


inline int I_TRIPLE(int n)
{
  return n+n+n;
}


void main()
{
  int a = 1;
  int b = 1;


  int r1 = D_TRIPLE(GetValue());
  int r2 = I_TRIPLE(GetValue());
} 




r1是使用巨集 他會將GetValue()展開到程式碼中三次 如此r1是將三次呼叫GetValue()的值相加
r2是使用inline function他只會呼叫GetValue()一次 之後便將這個值相加起來(三個相加)




inline的使用
inline的使用非常簡單 只需要在function宣告前加上inline即可(如前面範例所示)
另外 如果將function的內容直接寫在類別(class)宣告中的話 編譯器會直接把他當做inline
例如
class CMyClass
{
  int m_nValue;


  int GetValue()
  {
    return m_nValue;
  };
} 
以上的GetValue()並沒有宣告成inline 但是編譯器還是會直接將他當作inline function




inline的使用效益問題
最後 一個function是否要用inline來展開的決定權 還是在編譯器手上
編譯器會自己評估 將這個function用inline來展開合不合效益
如果說程式碼很長 使用inline並不能節省多少CPU時間 然後卻又被呼叫很多次
編譯器會判斷不合效益 則會自動忽略掉inline 

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(1) 人氣(12,232)

  • 個人分類:C++
▲top
  • 11月 10 週三 201016:39
  • C++ *.lib 和 *.dll 有什麼區別?

*.lib   和   *.dll   有什麼區別?

首先,Lib文件不是可執行文件,裡面沒有可執行部分。你知道DLL吧,實際上DLL是個二進制文件,裡面有可執行代碼、資源等等。但是我們的調用程序如何知道從哪裡開始執行該二進制文件哩?這時候必須給定一個接口,告訴調用DLL文件的程序在調用的時候從哪裡開始進入,或者說DLL中導出的函數入口有哪些。這時候才引入了Lib文件,因此Lib文件實際上是DLL導出函數的定義。 

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(1,014)

  • 個人分類:C++
▲top
  • 11月 05 週五 201016:35
  • C# 取得版本 record

 string[] 版號 = Application.ProductVersion.Split('.');

 string 版本 = 版號[0] + "." + 版號[1] + "." + 版號[2];

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(415)

  • 個人分類:C#
▲top
  • 11月 03 週三 201014:40
  • C# Key record

You have a TextBox control on your Windows Forms application and need to detect Enter. The TextBox allows your users to type letters into it, and you need to detect when a certain key is pressed. Our solution involves the KeyDown event in our C# Windows Form. We use the KeyDown event for our code.

Using KeyDown event

Open designer and click on TextBox. In the Visual Studio 2008 designer, click on your TextBox control in the form display. You will see the Properties Pane. Next, click on the lightning bolt icon. This icon stands for events. In the event tab, scroll to KeyDown, and double click in the space to the right. New code like that highlighted below will appear.

using System;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.Linq;
 
 namespace WindowsProgramNamespace
 {
 public partial class TextWindow : Form
 {
 public TextWindow()
 {
 InitializeComponent();
 }
 
 private void textBox1_KeyDown(object sender, KeyEventArgs e)
 {
 
 }
 }
 }

Using the KeyCode property

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(600)

  • 個人分類:C#
▲top
  • 11月 03 週三 201013:45
  • C# ToString 格式 record

C#:
前面補0的數字字串
String.Format("{0:0000}", 157); // 輸出 0157
 
前後都補0的數字字串
String.Format("{0:0000.0000}", 157.42); // 輸出 0157.4200
 
每3位數(千)加逗號
(String.Format("{0:0,0}", 38560); // 輸出 38,560
0:0  這樣表示會把前面補0 ,例如本來是6,會顯示06,所以不要有0: 就不會變成06



格式化電話號碼
(String.Format("{0:(###) ###-####}", 8005551212); // 輸出 (800) 555-1212
 
金額的表示
(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0); // 這個會顯示 Zero
(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50); // 這個會顯示 $1,243.50


//不滿特定長度的字串,後面補空白 
Console.WriteLine(String.Format("->{0,-10}<-", "Hello")); //->Hello     <-


//不滿特定長度的字串,前面補空白 
Console.WriteLine(String.Format("->{0,10}<-", "Hello")); //->     Hello<-


//前面補0的數字字串 
Console.WriteLine(String.Format("{0:0000}", 157)); // 輸出 0157


//前後都補0的數字字串 
Console.WriteLine(String.Format("{0:0000.0000}", 157.42)); // 輸出 0157.4200


//金額的表示, 每3位數(千)加逗號 
Console.WriteLine(String.Format("{0:0,0}", 41038560)); // 輸出 41,038,560 
Console.WriteLine(String.Format("{0:0,0}", 0)); // 輸出 00, 不好


//金額的表示 
Console.WriteLine(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0)); // 這個會顯示 Zero 
Console.WriteLine(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50)); // 這個會顯示 $1,243.50


//金額的表示_改良_取到小數2位 
Console.WriteLine(String.Format("{0:$###,###,###,##0.00}", 0)); // $0.00 
Console.WriteLine(String.Format("{0:$###,###,###,##0.00}", 12.5)); // $12.50 
Console.WriteLine(String.Format("{0:$###,###,###,##0.00}", 3456234532)); // $3,456,234,532.0


//金額的表示_改良2_取到個位 
Console.WriteLine(String.Format("{0:$#,0}", 0)); // $0 
Console.WriteLine(String.Format("{0:$#,0}", 12.5)); // $13,四拾五入到個位 
Console.WriteLine(String.Format("{0:$#,0}", 3456234532)); // $3,456,234,532


//格式化電話號碼 
Console.WriteLine(String.Format("{0:(###) ###-####}", 8005551212)); // 輸出 (800) 555-1212


//百分比 
Console.WriteLine(String.Format("{0:0%}", 17 / (float)60)); // 輸出 28%


//到小數2位的百分比 
Console.WriteLine(String.Format("{0:0.00%}", 17 / (float)60)); // 輸出 28.33%


//取小數點4位,並對第5位做四捨五入 
Console.WriteLine(String.Format("{0:#,0.####}", 1234.56789)); // 1,234.5679


//小數點不足4位不補0 
Console.WriteLine(String.Format("{0:0.####}", 1234.567)); // 1234.567


// 年/月/日 時:分:秒 毫秒
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss ffff"));

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(17,634)

  • 個人分類:C#
▲top
  • 11月 01 週一 201017:28
  • C# Dictionary用法 record

同步發表於Google Blogger

     Dictionary<string, object> tagDictionary = new Dictionary<string, object>();
        private void Form1_Load(object sender, EventArgs e)
        {
            
            tagDictionary.Add("AnimatedModelData",1000);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            if (tagDictionary["AnimatedModelData"] != null)
            {
                int i = (int)tagDictionary["AnimatedModelData"];
            }
        }

//============================================================================


下面是簡單的例子,包括聲明,填充鍵值對,移除鍵值對,遍歷鍵值對
            Dictionary<string, string> myDic = new Dictionary<string, string>();
            myDic.Add("aaa", "111");
            myDic.Add("bbb", "222");
            myDic.Add("ccc", "333");
            myDic.Add("ddd", "444");
            //如果添加已經存在的鍵,add方法會拋出異常
            try
            {
                myDic.Add("ddd","ddd");
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine("此鍵已經存在:" + ex.Message);
            }
            //解決add()異常的方法是用ContainsKey()方法來判斷鍵是否存在
            if (!myDic.ContainsKey("ddd"))
            {
                myDic.Add("ddd", "ddd");
            }
            else
            {
                Console.WriteLine("此鍵已經存在:");
 
            }
           
            //而使用索引器來負值時,如果建已經存在,就會修改已有的鍵的鍵值,而不會拋出異常
            myDic ["ddd"]="ddd";
            myDic["eee"] = "555";
            //使用索引器來取值時,如果鍵不存在就會引發異常
            try
            {
                Console.WriteLine("不存在的鍵\"fff\"的鍵值為:" + myDic["fff"]);
            }
            catch (KeyNotFoundException ex)
            {
                Console.WriteLine("沒有找到鍵引發異常:" + ex.Message);
            }
            //解決上面的異常的方法是使用ContarnsKey() 來判斷時候存在鍵,如果經常要取健值得化最好用 TryGetValue方法來獲取集合中的對應鍵值
            string value = "";
            if (myDic.TryGetValue("fff", out value))
            {
                Console.WriteLine("不存在的鍵\"fff\"的鍵值為:" + value );
            }
            else
            {
             
                Console.WriteLine("沒有找到對應鍵的鍵值"); 
            }
           
            //下面用foreach 來遍歷鍵值對
            //泛型結構體 用來存儲健值對
            foreach (KeyValuePair<string, string> kvp in myDic)
            {
                Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value);
            }
            //獲取值得集合
            foreach (string s in myDic.Values)
            {
                Console.WriteLine("value={0}", s);
            }
            //獲取值得另一種方式
            Dictionary<string, string>.ValueCollection values = myDic.Values;
            foreach (string s in values)
            {
                Console.WriteLine("value={0}", s);
            }
            //獲取鍵的集合和獲取值得集合類似

//============================================================================

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(16,198)

  • 個人分類:C#
▲top
  • 10月 28 週四 201023:23
  • C# 搜尋目錄 record

//=========================================================================================

不取得子目錄的話用這個:

string[] dirs = Directory.GetDirectories(@"c:\");//路徑
foreach (string dir in dirs)
{
  Console.WriteLine(dir);
}

文件的話把GetDirectories改成GetFiles

如果要遞歸的話,就是想取得此目錄下所有子目錄和文件的辦法用這個:

public void FindFile(string dir)             //參數為指定的目錄
{  
  //在指定目錄及子目錄下查找文件,在listBox1中列出子目錄及文件
  DirectoryInfo Dir=new DirectoryInfo(dir);

  try
  {
    foreach(DirectoryInfo d in Dir.GetDirectories())  //查找子目錄 
    {
      FindFile(Dir+d.ToString()+"\\");
      listBox1.Items.Add(Dir+d.ToString()+"\\");   //listBox1中填加目錄名
    }

    foreach(FileInfo f in Dir.GetFiles("*.*"))      //查找文件
    {
      listBox1.Items.Add(Dir+f.ToString());  //listBox1中填加文件名
    }
  }
  catch(Exception e)
  {
    MessageBox.Show(e.Message);
  }
}

調用
private void button1_Click(object sender, System.EventArgs e)
{
  string currentdir="c:\\testfolder";  //搜索的目錄
  if(currentdir[currentdir.Length-1]!='\\') //非根目錄
  currentdir+="\\"; 
  FindFile(currentdir);  //調用查找文件函數
}

注意 using System.IO;
//=========================================================================================

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(1,298)

  • 個人分類:C#
▲top
  • 10月 28 週四 201012:27
  • C# lock record

整理一下lock的特性。
1.lock的目標並不是物件,而是程式碼區段,只有被lock包覆的程式區段才會有作用。
2.當使用lock(xxx)時,xxx可以想象成是一個識別號,所有相同識別號的lock程式區段,會受到lock的影響。
3.lock並不能使用struct來當作識別號。
4.在大家都在存取"相同記憶體位置時" lock 這個標籤才有使用的意義.


from:http://www.dotblogs.com.tw/fphoenix/archive/2009/05/25/8557.aspx

 

MSDN的提示:
提供給 lock 關鍵字的引數必須是依據參考型別的物件,且用來定義鎖定的範圍。 在上述範例中,鎖定範圍是限制為此函式,因為在函式外部不存在物件 lockThis 的參考。 如果這類參考並不存在,鎖定範圍便會擴充至該物件。 嚴格說來,提供的物件僅用來唯一識別正由多執行緒共用的資源,所以可能是任意的類別執行個體。 不過實際上,此物件通常代表執行緒同步處理所需要的資源。 例如,如果容器物件是由多執行緒使用,則該容器可以傳遞至鎖定,在鎖定之後的同步化程式碼區塊將可存取容器。 只要其他執行緒在存取容器前鎖定了同一個容器,就可以安全地同步處理對物件的存取。


一般而言,您最好避免鎖定 public 型別,或避免鎖定不在應用程式控制範圍內的物件執行個體。 例如,若執行個體可以公開地被存取,lock(this) 可能會產生問題,因為在您控制範圍之外的程式碼可能也會鎖定物件。 這樣可能會建立死結狀況,在此狀況下有兩個或以上的執行緒等候同一個物件的釋放。 相對於物件,鎖定公用資料型別會造成相同原因的問題。 而鎖定常值字串則特別具風險性,因為常值字串是由 Common Language Runtime (CLR) 所「拘留」(interned)。 這表示對於整個程式,任何指定之字串常值有一個執行個體,完全相同的物件代表在所有執行緒上、所有執行的應用程式定義域中的常值。 因此,不論在應用程式處理序的任何地方,置於相同內容字串上的鎖定將會鎖定應用程式中該字串的所有執行個體。 因此,最好鎖定未被拘留的 private 或 protected 成員。 某些類別特別為鎖定提供成員。 例如,Array 型別提供了 SyncRoot。 許多集合型別也提供 SyncRoot 成員。

(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(15,014)

  • 個人分類:C#
▲top
«1...15161720»

最新文章

    文章精選

    個人資訊

    createps
    暱稱:
    createps
    分類:
    攝影寫真
    好友:
    累積中
    地區:

    熱門文章

    • ()C# 取亂數 record
    • ()C# lock record
    • ()C# Dictionary用法 record
    • ()C# ToString 格式 record
    • ()C# 十進制轉各進制,再轉回來 record
    • ()C# GUID產生亂數字串 record
    • ()C# 除法顯示小數點 record
    • ()C# List排序 record
    • ()C 函式參數指標寫法
    • ()中華電信、無線IP分享器和網路交換器如何連接

    文章分類

    • 國外旅遊 (2)
    • C# (87)
    • 喜歡的歌 (1)
    • GRD3 (1)
    • XNA (12)
    • C++ (4)
    • Game (1)
    • Game (1)
    • Apple (3)
    • 物理 (1)
    • 歌曲 (4)
    • SQL (1)
    • FTP (2)
    • 創業 (4)
    • 笑話 (1)
    • 技巧 (2)
    • Shader (1)
    • VB.NET (2)
    • 大易 (1)
    • 輸入法 (1)
    • OS (2)
    • Unity3D (3)
    • Lua (2)
    • Corona (29)
    • DirectX (15)
    • XNA 4.0 (2)
    • 程式使用 (1)
    • 懷孕 (1)
    • Facebook (1)
    • 網路硬體 (1)
    • 未分類文章 (1)

    文章搜尋

    誰來我家

    參觀人氣

    • 本日人氣:
    • 累積人氣: