C#使用类内部的方法创建类实例

时间:2019-03-29 19:35:40

标签: c# class methods instance

我有一个名为User的类,可以在其中进行如下初始化:

SELECT x.well_id,
       x.reservoir
       FROM (SELECT b.well_id,
                    b.reservoir,
                    row_number() OVER (PARTITION BY b.well_id
                                       ORDER BY b.qualifier ASC,
                                                b.createddate DESC) r#
                    FROM b
                         INNER JOIN a
                                    ON a.well_id = b.well_id) x
       WHERE x.r# = 1;

这很好用,但是在某些情况下,我想在User类内调用静态方法 ,这样代码现在看起来像这样:

User user = new User();

我确信这并不是特别困难,因为我已经在User user = User.SomeMethod(); 中看到了它:

System.Diagnostics.Process

如何让我的班级做同样的事情?

编辑:

这是我班级的样子:

Process p = Process.Start("filename");

我是否缺少方法构造函数?

2 个答案:

答案 0 :(得分:2)

您是否在谈论这样的事情? 没有方法构造函数,但是您可以从方法内部调用构造函数。您还可以有一个从该方法调用的私有构造函数。

class User {
    ...

   public User() {}
   private User(string s) {
       // Can only be called inside User class
       Console.WriteLine(s);
   }

    public static User Create() {
        return new User("Creating user from method...");
    }
}

答案 1 :(得分:0)

您要实现的目标称为工厂模式。在大多数情况下,您将创建一个单独的类,在其中添加Factory名称,它将为您创建User类。如果要控制如何创建User类,请使用工厂模式:

public class UserFactory
    {
        public static User CreateUser()
        {
            return new User();
        }
    }
  

注意:上面的代码只是简单的解释,关于工厂模式还有很多事情,并且比几行代码更复杂。如果您需要了解更多信息,可以查看下一个link ,它将为您提供详细的说明。

如果您希望User类负责通过静态方法创建自身,请查看以下示例:

public class User
    {
        public string Name { get; set; }
        public string LastName { get; set; }
        public User()
        {

        }
        public static User CreateUser()
        {
            return new User();
        }
        public static User CreateUser(string name, string lastName)
        {
            return new User
            {
                Name = name,
                LastName = lastName
            };
        }
    }