所以,我有一个名为 Condensed 的公开b
课程。每个浓缩实例应该有自己的文件路径,它将从中加载数据,我试图通过一个名为 Path 的私有partial
字符串来创建,然后创建6个{ {1}},但我发现当我更改static
的其中一个值时,Condensed
的所有实例都将其Path
的值设置为最新值{/} p>
Condensed
然后在我的主要课程中,我做如下:
Path
public partial class Condensed : UserControl
{
private static string Path;
public Sender Export()
{
//this uses Path to Load data then return it to the main class
}
public void Load(string path)
{
Path = path
}
}
只是一个存储为公共字符串数组的文件路径数组。
基本上我希望Condensed的每个实例都有自己唯一的字符串Path,它可以在创建它的实例中使用,我该怎么做?
答案 0 :(得分:3)
您的Path
- 字段为static
,这意味着它在所有实例之间共享。
将其修改为实例字段,使其与每个实例不同:
public partial class Condensed : UserControl
{
private string Path; // No static here
public Sender Export()
{
this uses Path to Load data then return it to the main class
}
public void Load(string path)
{
Path = path
}
}
它是一个部分类的事实,并没有真正与它有任何关系。部分类只是意味着您可以在单独的文件中定义类(在这种情况下,因为它是需要为UI设置一些代码的用户控件)
答案 1 :(得分:3)
static
导致您的问题,因为它在Condensed
类的所有实例之间使用 共享 内存,只需删除{{1您的属性定义中的关键字。
答案 2 :(得分:0)
using System;
namespace ConsoleApp
{
class Program
{
static void Main()
{
var condensed1 = new Condensed() { FilePath = "/filepath1/" };
var condensed2 = new Condensed() { FilePath = "/filepath2/blah/" };
var condensed3 = new Condensed() { FilePath = "/filepath3/blah/blah/" };
Console.WriteLine(condensed1.FilePath);
Console.WriteLine(condensed2.FilePath);
Console.WriteLine(condensed3.FilePath);
Console.ReadKey();
}
}
public partial class Condensed
{
public string FilePath { get; set; }
}
}
答案 3 :(得分:-3)
添加新的构造函数,如
public Condensed(string path)
{
Path = path
}
当您创建Condensed类的实例时,请将其命名为
Condensed c1 = new Condensed("C/Desktop/blabla");
c1.Export();