CSharp单例模式示例代码并使用线程安全写法
时间: 2023-01-29 13:14:36 浏览: 69
以下是 C# 中单例模式的示例代码,使用了线程安全写法:
```
public class Singleton
{
private static Singleton instance;
private static readonly object locker = new object();
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (locker)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
}
```
使用方法如下:
```
Singleton singleton = Singleton.Instance;
```
在这段代码中,我们使用了双重检查锁定来保证线程安全,这样可以在多线程环境下使用单例模式。
希望这段代码能帮到你!
相关问题
是否可以使用CSharp写一个单例模式demo并使用线程安全写法给我看看?
可以的。单例模式是设计模式中的一种,它的目的是保证一个类只有一个实例,并且提供一个全局访问点。
以下是一个使用 C# 写的单例模式示例,同时使用了线程安全写法:
```
public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
```
使用方法:
```
Singleton s1 = Singleton.Instance;
Singleton s2 = Singleton.Instance;
if (s1 == s2)
{
Console.WriteLine("Objects are the same instance");
}
```
csharp 提取excel示例代码
以下是 C# 提取 Excel 示例代码:
```csharp
using System;
using System.Data;
using System.Data.OleDb;
class Program
{
static void Main(string[] args)
{
// 连接字符串
var connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path/to/excel.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'";
// SQL 查询语句
var selectSql = "SELECT * FROM [Sheet1$]";
// 使用 OleDbDataAdapter 读取 Excel 数据
using (var conn = new OleDbConnection(connString))
using (var adapter = new OleDbDataAdapter(selectSql, conn))
{
conn.Open();
var dataset = new DataSet();
adapter.Fill(dataset);
// 输出结果
foreach (DataTable table in dataset.Tables)
{
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.Write(row[col] + "\t");
}
Console.WriteLine();
}
}
}
}
}
```