Tag: 构造函数

从同一个类中的另一个构造函数调用构造函数

我有一个带有两个构造函数的类(C#)。 这是代码片段: public class FooBar() { public FooBar(string s) { // constructor 1, some functionality } public FooBar(int i) : this(“My String”) { // constructor 2, some other functionality } } 是的,我知道我可以使用上面提到的方法从另一个构建器调用一个构造函数。 但是在这种情况下,如果我调用构造函数2,构造函数1中的所有语句都将在执行构造函数2中的语句之前运行。 我想要的是在运行构造函数2中的所有语句之后,它将调用构造函数1。 在我的确切情况下,我正在进行用户身份validation。 构造函数1仅使用用户ID检索用户信息,但构造函数2使用电子邮件和密码进行用户身份validation。 如果用户在数据库中,它将获取用户ID,现在我希望构造函数1填充该类的所有属性。 如果您需要更多信息,请与我们联系。 如果您认为还有其他更好的方法,我很乐意听取您的建议。 更新1:我想知道为什么这样的事情没有实现: public FooBar(bool b) { // constructor 3, some more functionality this.FooBar(“My String”); // calling constructor […]

增加构造函数中的唯一ID号

我正在使用C#中的一个对象,我需要该对象的每个实例都有一个唯一的id。 我对此的解决方案只是将一个成员变量放在类中,并在构造函数中调用idCount: objectID = idCount; idCount++; 我认为这可以解决我的问题,但似乎idCount永远不会增加,即使构造函数被多次调用。 例如,如果idCount = 1,则所有对象的objectID仍为1.为什么idCount ++不起作用? 任何帮助,将不胜感激。 抱歉,如果我的解释不充分,我不确定如何解释它。

如何为实现接口的类型要求没有参数的构造函数?

有办法吗? 我需要实现特定接口的所有类型都有一个无参数构造函数,可以这样做吗? 我正在为我公司的其他开发人员开发基本代码,以便在特定项目中使用。 有一个进程将创建执行某些任务的类型(在不同的线程中)的实例,我需要这些类型遵循特定的合同(ergo,接口)。 界面将在程序集内部 如果您对没有接口的情况有建议,我很乐意将其考虑在内……

带输出参数的构造函数

今天我看到一个看起来非常可怕的剪辑,但不幸的是我不能简单地改变它,所以我想知道我是否可以以某种方式绕过它。 我有一个带有构造函数的类,该构造函数具有成功的输出参数。 但这对我来说真的很难看。 而现在,当我从这个课程中衍生出来时,我必须带着这个参数 – 如果我想要或不想。 class ClassA { ClassA(out bool success) {…} } class B: ClassA { // call the constructor from ClassA but without the out-param } 所以我应该知道它的良好实践,或者不知道如何避免从ClassB中宣布out-param。

如何在其他构造函数中调用构造函数?

我的类有很多属性,我的一个构造函数将它们全部设置好,我希望默认构造函数调用另一个属性并使用set属性。 但我需要先准备参数,所以从标题中调用它无济于事。 这是我想做的事情: public class Test { private int result, other; // The other constructor can be called from header, // but then the argument cannot be prepared. public Test() : this(0) { // Prepare arguments. int calculations = 1; // Call constructor with argument. this(calculations); // Do some other stuff. other = 2; } […]

如何在C#中的类的构造函数中生成随机数

我知道在C#中的类的构造函数中调用一个方法不是一个好习惯,但我坚持一些奇怪的东西。 我的问题是,当我创建一个类的对象时,我需要在对象中使用随机数分配一个字段。 例如 class RandomNumberHandler { private int randomNumber; public RandomNumberHandler() { this.randomNumber = GenerateRandomNumber(); } private int GenerateRandomNumber() { return (new Random()).Next(3000) + 1000; } } 在我的情况下,我需要一个四位数字。 我想在我创建对象的类中生成随机数并将其作为参数传递给构造函数,但在另一个类中生成随机数似乎不是一个好主意,因为我试图实现强大的凝聚力对于我的课程。 我正在为我在大学的“高质量代码”课程这样做,我正在寻找最好的方法。 欢迎任何想法如何做到这一点:)

C#对象修改

我认为这真的是一个非常蹩脚的问题,但我想我会得到答案比通过谷歌搜索自己:) 假设我有一些带有构造函数的类: public class TestClass { private readonly IRepository repository; public TestClass(IRepository repository) { this.repository = repository; // Here is the non-obvious line – it invokes some // method, which changes the internal contents of // the repository object. repository.AddSomething(…); } } 现在: IRepository sqlRepository = new SqlRepository(…); TestClass testClass = new TestClass(sqlRepository); 1)我不擅长传递C#价值/参考 – […]

C#构造函数参数传递

我目前重构我的程序更加面向对象,我遇到了我的对象的构造函数。 所有对象都存储在一个必须是人类可读的数据库中,所以我认为程序员直接传递一个对象的构造函数或者对象将自己获取值是很好的。 所以,我想要做的是: public TestObject(Data.MyDataTable table) { // Some checks if the table is valid TestObject(table[0]); } public TestObject(Data.MyDataRow row) { // Some checks if the row is valid TestObject(row.Name, row.Value); } public TestObject(String name, String value) { // Some checks if the strings are valid _name = name; _value = value; } 所以,正如你所看到的,我想要一种“构造函数链”,根据程序员调用它的方式,值将在每一步中传递并validation。 我按照我写的方式尝试了它,但它没有用。 […]

窗口关闭后,无法设置可见性或调用Show,ShowDialog或EnsureHandle

这是我的WPF应用程序的App构造函数: public partial class App { public App() { Run(new Login(false)); } } 这是我的Login构造函数: public Login(bool ignoreSettings) { InitializeComponent(); if (ignoreSettings) { TxtUsername.Text = SettingsSaver.LoadUsername(); TxtCrmUrl.Text = SettingsSaver.LoadCrmUrl(); return; } if (string.IsNullOrWhiteSpace(SettingsSaver.LoadUsername()) || string.IsNullOrWhiteSpace(SettingsSaver.LoadCrmUrl())) return; try { CrmConnector.ConnectToCrm(); MainWindow mainWindow = new MainWindow(); mainWindow.Show(); } catch (SecurityAccessDeniedException) { MessageBox.Show(@”Uw inloggegevens zijn niet correct. Gelieve deze […]

使用C#中的reflection检测编译器生成的默认构造函数

我的目标是.NET 3.5 SP1,我正在使用CommentCheckervalidation我的XML文档,一切正常,直到我进入这样的类: /// /// documentation /// public sealed class MyClass { /// /// documentation /// public void Method() { } } 在上面的例子中,据我所知,编译器为我的类生成一个默认构造函数。 这样做的问题是CommentChecker会生成警告,告诉我构造函数缺少注释。 我试图修改程序以检测这种特殊情况并忽略它,但我卡住了,我已经尝试过IsDefined(typeof(CompilerGeneratedAttribute), true)但是没有用。 简而言之,我如何使用reflection检测默认构造函数?