c#使用class中的方法创建类实例

问题描述 投票:-1回答:2

我有一个名为User的类,可以像这样初始化它:

User user = new User();

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

User user = User.SomeMethod();

我确信这并不是非常困难,因为我在System.Diagnostics.Process看到过它:

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

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

编辑:

这就是我班上的样子:

public class User
    {
        public User()
        {
            // this runs when User u = new User() is called
        }

        public static void SomeMethod()
        {
            // I want this to run when "User u = User.SomeMethod() is called
        }
    }

我错过了方法构造函数吗?

c# class methods instance
2个回答
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...");
    }
}

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
            };
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.