| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System;
- namespace GFGGame
- {
- // 替代 System.Lazy<T> 的简单实现
- // 替代 System.Lazy<T> 的简易实现
- public class SimpleLazy<T>
- {
- private readonly Func<T> _initializer;
- private T _value;
- private bool _isInitialized;
- private readonly object _lock = new object();
- public SimpleLazy(Func<T> initializer)
- {
- _initializer = initializer ?? throw new ArgumentNullException(nameof(initializer));
- }
- public T Value
- {
- get
- {
- if (!_isInitialized)
- {
- lock (_lock)
- {
- if (!_isInitialized)
- {
- _value = _initializer();
- _isInitialized = true;
- }
- }
- }
- return _value;
- }
- }
- public bool IsValueCreated => _isInitialized;
- }
- }
|