C# Studygroup 0626

2016-06-27

前言

距離上次讀書會似乎已經過了三個禮拜了,上上禮拜延期,而上禮拜因為要忙期末沒有去,真的還滿可惜的這次期末做了一款回合制 RPG 戰鬥遊戲,花了我超多的時間,做過才發現真的是超級深奧,如果有機會的話,我再來分享如何實作 Unity 的回合制戰鬥系統好了 XD 。
這次一樣會跟大家分享一些 C# 的小知識。

讀書會內容

本次的主要內容是一些和 Class 有關的東西。

auto-implemented properties

有寫過 C++ 或 C# 的人應該都有用過 Class,當我們不想讓 Class 內的東西給外面看到或直接修改的時候,我們會將裡面的 field 設成 private 然後再宣告一些 get 或 set 的函式來讀取或修改,以我寫了一個程式為例,我設定了一個版本號。

1
2
3
4
5
6
7
8
9
class Prog
{
private string Version;

public string GetVersion()
{
return Version;
}
}

一般人是無法去使用 Version 的,只能透過 GetVersion 去讀取他的內容,但無法修改他。
也有人會用更簡潔的方法,也就是使用 properties 來將 Version 設定為唯讀

1
public string Version { get; private set; }

雖然已經簡短很多了,但如果今天要寫的 properties 很多可能還是會覺得稍微有些麻煩,
這個時候其實只要打 prop 然後按兩次 TAB ,它就會自動幫你生成好一個 properties 了,如此一來只需要去修改名稱就好。
算是一個滿方便的小功能,能夠節省不少時間。

partial class

平常我們在寫 class 的時候常常會寫得一大長串,這在閱讀跟維護上可能會有點不太方便,而 C# 其實有一個叫做 partial class 的寫法

class1.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace ConsoleApplication1
{
partial class Partial_class
{
private int x;

public int get_x()
{
return x;
}

public void set_x(int x)
{
this.x = x;
}
}
}

class2.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace ConsoleApplication1
{
partial class Partial_class
{
private int y;

public int get_y()
{
return y;
}

public void set_y(int y)
{
this.y = y;
}
}
}

可以讓你把同個 namaspace 底下的 class 拆開來寫,一方面方便閱讀,在多人開發上也會相對的方便,每個人可以專心撰寫自己的部分,
然後再合起來一起編譯,要注意的是每個部分的 class 都要寫成 partial class 才行,不然會編譯錯誤。

總結

目前還沒有想講解 MVC 的打算,因為真的太難懂了 QQ,本來想在這次心得解說 MVC 的 N+1 problem 但是剛剛研究了三個小時還沒弄懂,
希望有人願意和我討論一下,我之後弄懂會再補上。


Comments: