Skip to content

Commit 2458822

Browse files
Use Random.Shared property (#31453)
* Use Random.Shared Use the new .NET 6 Random.Shared static property where possible. See dotnet/runtime#50297. * Revert WebApi-CSharp changes For some reason I don't understand, this template doesn't see Random.Shared when compiled so this reverts the previous change for this template.
1 parent bc1ff6a commit 2458822

File tree

25 files changed

+50
-67
lines changed

25 files changed

+50
-67
lines changed

src/Components/Samples/BlazorServerApp/Data/WeatherForecastService.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ public class WeatherForecastService
1313

1414
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
1515
{
16-
var rng = new Random();
1716
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
1817
{
1918
Date = startDate.AddDays(index),
20-
TemperatureC = rng.Next(-20, 55),
21-
Summary = Summaries[rng.Next(Summaries.Length)]
19+
TemperatureC = Random.Shared.Next(-20, 55),
20+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
2221
}).ToArray());
2322
}
2423
}

src/Components/WebAssembly/Samples/HostedBlazorWebassemblyApp/Server/Data/WeatherForecastService.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ public class WeatherForecastService : IWeatherForecastService
1515

1616
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
1717
{
18-
var rng = new Random();
1918
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
2019
{
2120
Date = startDate.AddDays(index),
22-
TemperatureC = rng.Next(-20, 55),
23-
Summary = Summaries[rng.Next(Summaries.Length)]
21+
TemperatureC = Random.Shared.Next(-20, 55),
22+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
2423
}).ToArray());
2524
}
2625
}

src/Components/WebAssembly/testassets/Wasm.Authentication.Server/Controllers/WeatherForecastController.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,11 @@ public WeatherForecastController(ILogger<WeatherForecastController> logger)
2828
[HttpGet]
2929
public IEnumerable<WeatherForecast> Get()
3030
{
31-
var rng = new Random();
3231
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
3332
{
3433
Date = DateTime.Now.AddDays(index),
35-
TemperatureC = rng.Next(-20, 55),
36-
Summary = Summaries[rng.Next(Summaries.Length)]
34+
TemperatureC = Random.Shared.Next(-20, 55),
35+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
3736
})
3837
.ToArray();
3938
}

src/Components/benchmarkapps/BlazingPizza.Server/Pages/Map.razor

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@
1010
@functions {
1111
private int locX;
1212
private int locY;
13-
private Random random = new Random();
1413
private Timer timer;
1514
private string locString;
1615

1716
protected override void OnInitialized()
1817
{
1918
timer = new Timer(_ =>
2019
{
21-
locX = random.Next(1000);
22-
locY = random.Next(1000);
20+
locX = Random.Shared.Next(1000);
21+
locY = Random.Shared.Next(1000);
2322
locString = $"{locX},{locY}";
2423

2524
InvokeAsync(() => StateHasChanged());

src/Components/benchmarkapps/Wasm.Performance/TestApp/Pages/TimerComponent.razor

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
@code
99
{
10-
Random random = new Random();
1110
Timer timer;
1211
int red = 128;
1312
int green = 128;
@@ -22,9 +21,9 @@
2221
{
2322
InvokeAsync(() =>
2423
{
25-
red = random.Next(0, 256);
26-
green = random.Next(0, 256);
27-
blue = random.Next(0, 256);
24+
red = Random.Shared.Next(0, 256);
25+
green = Random.Shared.Next(0, 256);
26+
blue = Random.Shared.Next(0, 256);
2827
StateHasChanged();
2928
BenchmarkEvent.Send(JSRuntime, "Finished updating color");
3029
});

src/Components/test/testassets/BasicTestApp/ReorderingFocusComponent.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
</ul>
3232

3333
@code {
34-
Random rng = new Random();
3534
TodoItem[] todoItems = new[]
3635
{
3736
new TodoItem { Id = 1, Text = "First" },
@@ -43,7 +42,7 @@
4342

4443
void Shuffle()
4544
{
46-
todoItems = todoItems.OrderBy(x => rng.Next()).ToArray();
45+
todoItems = todoItems.OrderBy(x => Random.Shared.Next()).ToArray();
4746
}
4847

4948
class TodoItem

src/DataProtection/DataProtection/src/KeyManagement/KeyRingProvider.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,12 @@ private static TimeSpan GetRefreshPeriodWithJitter(TimeSpan refreshPeriod)
259259
// hit a single repository simultaneously. For instance, if the refresh period is 1 hour,
260260
// we'll return a value in the vicinity of 48 - 60 minutes. We use the Random class since
261261
// we don't need a secure PRNG for this.
262-
return TimeSpan.FromTicks((long)(refreshPeriod.Ticks * (1.0d - (new Random().NextDouble() / 5))));
262+
#if NET6_0_OR_GREATER
263+
var random = Random.Shared;
264+
#else
265+
var random = new Random();
266+
#endif
267+
return TimeSpan.FromTicks((long)(refreshPeriod.Ticks * (1.0d - (random.NextDouble() / 5))));
263268
}
264269

265270
private static DateTimeOffset Min(DateTimeOffset a, DateTimeOffset b)

src/Http/Routing/test/UnitTests/RouteCollectionTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -512,8 +512,7 @@ private static RouteCollection GetRouteCollectionWithNamedRoutes(IEnumerable<str
512512

513513
private static RouteCollection GetNestedRouteCollection(string[] routeNames)
514514
{
515-
var random = new Random();
516-
int index = random.Next(0, routeNames.Length - 1);
515+
int index = Random.Shared.Next(0, routeNames.Length - 1);
517516
var first = routeNames.Take(index).ToArray();
518517
var second = routeNames.Skip(index).ToArray();
519518

src/Identity/Specification.Tests/src/UserManagerSpecificationTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,8 @@ public async Task CheckSetEmailValidatesUser()
305305
var manager = CreateManager();
306306
manager.Options.User.RequireUniqueEmail = true;
307307
manager.UserValidators.Add(new UserValidator<TUser>());
308-
var random = new Random();
309-
var email = "foo" + random.Next() + "@example.com";
310-
var newEmail = "bar" + random.Next() + "@example.com";
308+
var email = "foo" + Random.Shared.Next() + "@example.com";
309+
var newEmail = "bar" + Random.Shared.Next() + "@example.com";
311310
var user = CreateTestUser(email: email);
312311
IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
313312
IdentityResultAssert.IsSuccess(await manager.SetEmailAsync(user, newEmail));

src/Middleware/HeaderPropagation/samples/HeaderPropagationSample/Startup.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,10 @@ private static StringValues GenerateBetaFeatureOptions()
111111

112112
var threshold = 0.80; // 20% chance for each feature in beta.
113113

114-
var random = new Random();
115114
var values = new List<string>();
116115
for (var i = 0; i < features.Length; i++)
117116
{
118-
if (random.NextDouble() > threshold)
117+
if (Random.Shared.NextDouble() > threshold)
119118
{
120119
values.Add(features[i]);
121120
}

0 commit comments

Comments
 (0)