如何为每个类的实例创建一个不同的字符串

时间:2017-01-12 12:23:48

标签: c#

所以,我有一个名为 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,它可以在创建它的实例中使用,我该怎么做?

4 个答案:

答案 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();