只能生成乙個例項的類

2021-09-19 08:02:24 字數 1919 閱讀 5398

這次遇到的是乙個c#問題,本著迎難而上精神雖然c#不熟但是盤它就行了。

問題如下:

用linux編譯c#需要先搭建環境,那就先搭建乙個吧。

搭建環境有好多坑,根據以下內容可以完成並且解決各種問題:

還有就是4版本以上的,只能用mcs命令編譯

搭建好之後可以開始寫**了,對c#不太熟悉先了解一些基礎概念:

1:sealed修飾符表示密封用於類時,表示該類不能再被繼承。

2:c#中屬性的作用:保護字段,對欄位取值與賦值進行限定

屬性的使用:

_name(屬性名)

public [對應字段型別] 屬性名name

set}

3:在c#中有靜態建構函式。這個函式的特點是在型別第一次被使用之前由執行時自動呼叫,而且保證只呼叫一次。

4:private static readonly object 同步鎖名字 = new object();

上面這條語句是同步鎖,多執行緒程式設計使用。

綜上,最好根據靜態建構函式的特點,可以利用它實現單例模式。

**如下:

using system;

namespace singleton

private static singleton1 instance = null;

public static singleton1 instance}}

public sealed class singleton2/*第二種方法用sealed修飾符,定義靜態例項當需要的時候建立該例項。防止多執行緒同時執行到判斷instance是否為空的語句,新增同步鎖。*/

private static readonly object syncobj = new object();

private static singleton2 instance = null;

public static singleton2 instance

return instance;}}

}public sealed class singleton3/*第三種方法用sealed修飾符,定義靜態例項當需要的時候建立該例項。防止多執行緒同時執行到判斷instance是否為空的語句,新增同步鎖。並且進行判斷只在該例項被第一次建立之前新增同步鎖,建立之後則不增加同步鎖。*/

private static object syncobj = new object();

private static singleton3 instance = null;

public static singleton3 instance

}return instance;}}

}public sealed class singleton4/*第四種方法用sealed修飾符,定義靜態建構函式。*/

public static void print()

private static singleton4 instance = new singleton4();

public static singleton4 instance}}

public sealed class singleton5/*第五種方法用sealed修飾符,定義靜態建構函式。並在內部定義私有型別,避免了第一次用到時被建立,使得當呼叫屬性singleton5.instance時建立例項。*/

public static void print()

public static singleton5 instance

}class nested

internal static readonly singleton5 instance = new singleton5();}}

class program}}

設計乙個類,只能生成該類的乙個例項

只能生成乙個例項的類是實現了singleton 單例 模式的型別。解題思路 根據題目的要求,1.必須把建構函式設為私有函式,防止他人建立例項。2.在類中建立靜態私有的例項,在需要時建立該例項,直到程式結束才銷毀。3.提供乙個靜態的公有的函式用於建立 獲取靜態私有物件。在系統的日誌輸出,gui應用必須...

C 只能例項化乙個物件的類

include include using namespace std 1.建立類 class student 2.類外實現 初始化靜態成員資料 student student total null student student string nam 0 int ag 0 student stud...

單例模式(乙個類只能建立乙個例項)

三個步驟 通過new乙個靜態變數 private static single single new single1 構造方法私有化 private single 新建乙個公共獲取物件的方法 靜態 public static single getintance return 這個物件 一共有七中單例模...