diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/CharArrayToStringBenchmarks.cs b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/CharArrayToStringBenchmarks.cs
new file mode 100644
index 0000000000..d6fa84616b
--- /dev/null
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/CharArrayToStringBenchmarks.cs
@@ -0,0 +1,25 @@
+using BenchmarkDotNet.Attributes;
+
+namespace ConvertCharArray2String.Benchmarks;
+
+[MemoryDiagnoser]
+public class CharArrayToStringBenchmarks
+{
+ private char[] _charArray = [];
+
+ [Params(9, 1000)]
+ public int Length { get; set; }
+
+ [GlobalSetup]
+ public void Setup() =>
+ _charArray = Enumerable.Range(0, Length).Select(i => (char)('a' + i % 26)).ToArray();
+
+ [Benchmark(Baseline = true)]
+ public string StringConstructor() => new string(_charArray);
+
+ [Benchmark]
+ public string StringConcat() => string.Concat(_charArray);
+
+ [Benchmark]
+ public string StringJoin() => string.Join("", _charArray);
+}
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/ConvertCharArray2String.Benchmarks.csproj b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/ConvertCharArray2String.Benchmarks.csproj
new file mode 100644
index 0000000000..62be4f867f
--- /dev/null
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/ConvertCharArray2String.Benchmarks.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/Program.cs b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/Program.cs
new file mode 100644
index 0000000000..9d02bda805
--- /dev/null
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.Benchmarks/Program.cs
@@ -0,0 +1,4 @@
+using BenchmarkDotNet.Running;
+using ConvertCharArray2String.Benchmarks;
+
+BenchmarkRunner.Run(args: args);
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.sln b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.sln
index 1e8030f5cc..7581bf4144 100644
--- a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.sln
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String.sln
@@ -1,31 +1,62 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
-VisualStudioVersion = 17.1.31911.260
+VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertCharArray2String", "ConvertCharArray2String\ConvertCharArray2String.csproj", "{F21AE7B0-5961-431F-9573-CF567C362730}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertCharArray2String", "ConvertCharArray2String\ConvertCharArray2String.csproj", "{CC387591-8080-46EE-8045-62FB77775F15}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertCharArray2StringTests", "ConvertCharArray2StringTests\ConvertCharArray2StringTests.csproj", "{8359457A-7DEA-438D-9A3B-8725C41729C8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertCharArray2StringTests", "ConvertCharArray2StringTests\ConvertCharArray2StringTests.csproj", "{269D6433-F548-49D7-AE0A-346ADBDEAFF3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertCharArray2String.Benchmarks", "ConvertCharArray2String.Benchmarks\ConvertCharArray2String.Benchmarks.csproj", "{9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E526D224-B8CE-4E46-AF6C-AB5A3987323C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E526D224-B8CE-4E46-AF6C-AB5A3987323C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E526D224-B8CE-4E46-AF6C-AB5A3987323C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E526D224-B8CE-4E46-AF6C-AB5A3987323C}.Release|Any CPU.Build.0 = Release|Any CPU
- {C1B5D5EE-1714-49E8-BAAA-5A31DA4C852E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B5D5EE-1714-49E8-BAAA-5A31DA4C852E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C1B5D5EE-1714-49E8-BAAA-5A31DA4C852E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C1B5D5EE-1714-49E8-BAAA-5A31DA4C852E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|x64.Build.0 = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Debug|x86.Build.0 = Debug|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|x64.ActiveCfg = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|x64.Build.0 = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|x86.ActiveCfg = Release|Any CPU
+ {CC387591-8080-46EE-8045-62FB77775F15}.Release|x86.Build.0 = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|x64.Build.0 = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Debug|x86.Build.0 = Debug|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|x64.ActiveCfg = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|x64.Build.0 = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|x86.ActiveCfg = Release|Any CPU
+ {269D6433-F548-49D7-AE0A-346ADBDEAFF3}.Release|x86.Build.0 = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|x64.Build.0 = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Debug|x86.Build.0 = Debug|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|x64.ActiveCfg = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|x64.Build.0 = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|x86.ActiveCfg = Release|Any CPU
+ {9FF511B2-F0CB-4DD1-9EFF-965E49B7D636}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {6A5466CD-321D-46D4-B2B3-1E36EAF17EEC}
- EndGlobalSection
EndGlobal
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/ConvertCharArray2String.csproj b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/ConvertCharArray2String.csproj
index 74abf5c976..dfb40caafc 100644
--- a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/ConvertCharArray2String.csproj
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/ConvertCharArray2String.csproj
@@ -2,7 +2,7 @@
Exe
- net6.0
+ net10.0
enable
enable
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/Program.cs b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/Program.cs
index e53ca9e642..de5f5e0482 100644
--- a/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/Program.cs
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2String/Program.cs
@@ -1,23 +1,27 @@
-using System.Text;
-
-namespace ConvertCharArray2String
-{
- public class Program
- {
- public static void Main(string[] args)
- {
- char[] charArray = { 'c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e' };
-
- var convertedToString = new string(charArray);
- Console.WriteLine(convertedToString);
-
- var joinedToString = string.Join("", charArray);
- Console.WriteLine(joinedToString);
-
- var concatedToString = string.Concat(charArray);
- Console.WriteLine(concatedToString);
-
- Console.ReadLine();
- }
- }
-}
\ No newline at end of file
+char[] charArray = ['c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e'];
+
+var convertedToString = new string(charArray);
+
+Console.WriteLine(convertedToString);
+
+var partOfArray = new string(charArray, 0, 4);
+
+Console.WriteLine(partOfArray);
+
+var joinedToString = string.Join("", charArray);
+
+Console.WriteLine(joinedToString);
+
+var withDashes = string.Join("-", charArray);
+
+Console.WriteLine(withDashes);
+
+var concatedToString = string.Concat(charArray);
+
+Console.WriteLine(concatedToString);
+
+char letter = 'c';
+
+var fromChar = letter.ToString();
+
+Console.WriteLine(fromChar);
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArray2StringTests.csproj b/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArray2StringTests.csproj
index f72bee824b..560313bf07 100644
--- a/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArray2StringTests.csproj
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArray2StringTests.csproj
@@ -1,17 +1,17 @@
- net6.0
+ net10.0
+ enable
enable
-
false
-
-
-
-
+
+
+
+
diff --git a/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArrayTests.cs b/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArrayTests.cs
index b3b00f6bed..c8b93cccbd 100644
--- a/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArrayTests.cs
+++ b/strings-csharp/ConvertCharArray2String/ConvertCharArray2StringTests/ConvertCharArrayTests.cs
@@ -1,38 +1,78 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
-namespace ConvertCharArray2StringTests
+namespace ConvertCharArray2StringTests;
+
+[TestClass]
+public class ConvertCharArrayTests
{
- [TestClass]
- public class ConvertCharArrayTests
+ private readonly char[] _charArray = ['c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e'];
+
+ [TestMethod]
+ public void GivenCharArray_WhenConvertedByConstructor_ThenReturnString()
+ {
+ var convertedToString = new string(_charArray);
+
+ Assert.AreEqual("code maze", convertedToString);
+ }
+
+ [TestMethod]
+ public void GivenCharArray_WhenConvertedByJoin_ThenReturnString()
+ {
+ var joinedToString = string.Join("", _charArray);
+
+ Assert.AreEqual("code maze", joinedToString);
+ }
+
+ [TestMethod]
+ public void GivenCharArray_WhenConvertedByConcat_ThenReturnString()
+ {
+ var concatedToString = string.Concat(_charArray);
+
+ Assert.AreEqual("code maze", concatedToString);
+ }
+
+ [TestMethod]
+ public void GivenCharArray_WhenConvertedByConstructorWithRange_ThenReturnPartOfString()
{
- [TestMethod]
- public void GivenCharArray_WhenConvertedByConstructor_ThenReturnString()
- {
- char[] charArray = { 'c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e' };
+ var partOfArray = new string(_charArray, 0, 4);
- var convertedToString = new string(charArray);
-
- Assert.AreEqual("code maze", convertedToString);
- }
+ Assert.AreEqual("code", partOfArray);
+ }
- [TestMethod]
- public void GivenCharArray_WhenConvertedByJoin_ThenReturnString()
- {
- char[] charArray = { 'c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e' };
+ [TestMethod]
+ public void GivenSingleChar_WhenConvertedByToString_ThenReturnString()
+ {
+ char letter = 'c';
- var joinedToString = string.Join("", charArray);
+ var fromChar = letter.ToString();
- Assert.AreEqual("code maze", joinedToString);
- }
+ Assert.AreEqual("c", fromChar);
+ }
- [TestMethod]
- public void GivenCharArray_WhenConvertedByConcat_ThenReturnString()
- {
- char[] charArray = { 'c', 'o', 'd', 'e', ' ', 'm', 'a', 'z', 'e' };
+ [TestMethod]
+ public void GivenCharArray_WhenJoinedWithSeparator_ThenReturnSeparatedString()
+ {
+ var withDashes = string.Join("-", _charArray);
+
+ Assert.AreEqual("c-o-d-e- -m-a-z-e", withDashes);
+ }
- var concatedToString = string.Concat(charArray);
+ [TestMethod]
+ public void GivenNullCharArray_WhenConvertedByConstructor_ThenReturnEmptyString()
+ {
+ char[]? nothing = null;
+
+ var convertedToString = new string(nothing);
+
+ Assert.AreEqual(string.Empty, convertedToString);
+ }
+
+ [TestMethod]
+ public void GivenNullCharArray_WhenConvertedByConcatOrJoin_ThenThrowArgumentNullException()
+ {
+ char[]? nothing = null;
- Assert.AreEqual("code maze", concatedToString);
- }
+ Assert.ThrowsExactly(() => string.Concat(nothing!));
+ Assert.ThrowsExactly(() => string.Join("", nothing!));
}
-}
\ No newline at end of file
+}