当前位置:  开发笔记 > 编程语言 > 正文

不了解C#中的对象实例化

如何解决《不了解C#中的对象实例化》经验,为你挑选了2个好方法。

这篇文章对我对C#类的理解以及为什么它们比静态函数更有优势.

我想获得一个对象列表.列表中的每个对象代表表中的记录.这在静态函数中很容易做到.

使用课程,我已经能够按如下方式进行:

调用例程:

ListOfBusinesses l = new ListOfBusinesses ();
List b = l.listBusinesses();

课程:

 public class Business
 {
    public string Bupk { get; set; }
    public string Bu_name { get; set; }

 }  

 public class ListOfBusinesses
 {
    public List listBusinesses()
    {

      List businesses = new List();
      businesses.Add(new Business("1", "Business Name 1"));
      businesses.Add(new Business("2", "Business Name 2"));

      return businesses;
    }
 }

我不能重写这个类,这样就可以用一行来完成:

ListOfBusinesses l = new ListOfBusinesses();

在我看来,上面的ListofBusinesses类只不过是一个包含在没有属性的类中的静态函数,只是为了拥有一个类.

我试过了:

public class ListOfBusinesses
{
    List businesses;

    public List ListOfBusinesses()
    {

      List businesses = new List();
      businesses.Add(new Business("1", "Business Name 1"));
      businesses.Add(new Business("2", "Business Name 2"));

      return businesses;
    }
}

但收到编译器错误"成员名称不能与封闭类型相同".例如,我试图使用构造函数,但我遗漏了一些东西.

在我误解了一段时间的地方,任何帮助都会启发我.

迈克托马斯



1> lc...:

我认为你混淆了静态函数,构造函数和工厂方法的概念.

静态功能

定义

这是一种无法访问(并且与之无关)this类实例的方法.

public class BusinessHelper
{   
    public static List ListBusinesses()
    {

        List businesses = new List();
        businesses.Add(new Business("1", "Business Name 1"));
        businesses.Add(new Business("2", "Business Name 2"));

        return businesses;
    }
}

用法

使用类名称调用静态方法,而不是类的实例.

List businesses = BusinessHelper.ListBusinesses();

构造函数:这是一个创建this类实例的方法.它没有返回值,并在实例化对象时调用.

public class BusinessList
{   
    public List TheList;

    public BusinessList()
    {    
        TheList = new List();
        TheList.Add(new Business("1", "Business Name 1"));
        TheList.Add(new Business("2", "Business Name 2"));   
    }
}

用法

创建对象的新实例.

BusinessList myBusinessList = new BusinessList();
businesses = myBusinessList.TheList;

工厂方法

定义

这是一个创建对象实例的方法,以某种方式实例化它,并返回对它的引用.

public class BusinessList
{   
    public List TheList;

    public static BusinessList BusinessListWithTwoCompanies()
    {
        BusinessList instance = new BusinessList();

        businesses = new List();
        businesses.Add(new Business("1", "Business Name 1"));
        businesses.Add(new Business("2", "Business Name 2"));

        return instance;
    }
}

用法

调用工厂方法而不是创建新对象.

BusinessList myBusinessList = BusinessList.BusinessListWithTwoCompanies();
businesses = myBusinessList.TheList;

另外要注意两件事:

    声明一个businesses领域,而是继续以实例另一个称为变量businesses在你的ListOfBusinesses()方法,并将其返回.这个businesses领域什么都不会发生.小心变量范围.

    您不能拥有与该类同名的成员(字段,属性或方法).这是为构造函数保留的,它没有返回类型(参见上文).这就是您收到编译器错误的原因.



2> Samir Talwar..:

当然.而不是封装List,扩展它.然后你只需要在构造函数中添加它.

public class ListOfBusinesses : List {
    public ListOfBusinesses() : base() {
        Add(new Business("1", "Business Name 1"));
        Add(new Business("2", "Business Name 2"));
    }
}

要使用它:

List l = new ListOfBusinesses();

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有