使用这个问题的答案“如何将字符串添加到 string[] 数组?没有 .Add 函数”我试图使用这个答案来编写一个通用扩展以将元素附加到 .Add 函数generic array。仅使用该Array.Resize()方法效果很好,下面的示例向我的string array
string[] array = new string[] { "Foo", "Bar" };
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "Baz";
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用下面描述的 ArrayExtension 方法时,该方法确实在方法内调整了数组的大小,但是当它返回时数组没有改变?
我的扩展课
public static class ArrayExtensions
{
public static void Append<T>(this T[] array, T append)
{
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = append; // < Adds an extra element to my array
}
} …Run Code Online (Sandbox Code Playgroud) 当Foo创建一个新的类对象时,构造函数应该根据对象属性创建一个新文件夹和一个新文件.但我明白了NullException (param: path2)吗?
我发现在调用构造函数时,对象属性具有Null值.但是我在创建对象时给出了属性值?我错过了什么?
我的Foo课程:
public class Foo
{
public string Bar { get; set; }
public string Baz { get; set; }
public string Source { get { return Path.Combine(Qux, Baz, Bar); } }
private string Qux { get { return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); } }
public Foo()
{
// Use property values to find or create Directory and File
if (!Directory.Exists(Path.Combine(Qux, Baz))) Directory.CreateDirectory(Path.Combine(Qux, Baz));
if (!File.Exists(Source)) File.Create(Source);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的主课:
// Create a new Foo object …Run Code Online (Sandbox Code Playgroud)