Tag: 构造函数

编程语言中的构造函数

为什么constructor不被视为类的member ? 有什么具体原因吗? 感谢致敬。

我应该如何在类层次结构中链接构造函数?

我们有以下类层次结构: public class Base { public Base() { // do generic initialization } public Base(SomeClass param1) : this() { // init properties that require param1 } public Base(SomeClass param1, OtherClass param2) : this(param1) { // init properties that require param2 } // … } public class Derived : Base { public Derived() { // do […]

这个语句在构造函数的参数之后

当我尝试使用APN构建内容时,我看到了这个代码块。 有人可以解释一下“这个”陈述是做什么的吗? public ApplePushService(IPushChannelFactory pushChannelFactory, ApplePushChannelSettings channelSettings) : this(pushChannelFactory, channelSettings, default(IPushServiceSettings)) 它是否像那些参数的默认值?

为什么base()构造函数不是必需的?

我有类结构 abstract class Animal { public Animal(){ //init stuff.. } } class Cat : Animal { public Cat(bool is_keyboard) : base() //NOTE here { //other init stuff } } 现在,看看注意到的那一行。 如果你删除: base()然后它将编译没有错误。 为什么是这样? 有没有办法禁用此行为?

C#语法通过数组中的构造函数params初始化自定义类/对象?

我有一个至少有4个变量的类,我已经为类创建了一个构造函数,以便我可以使用它进行初始化 MyClass testobj = new MyClass(1234,56789,”test text”, “something else”, “foo”); 工作良好。 然后我有一个这样的数组,我需要在循环中解析,所以我想在这个数组中得到一些静态数据。 我的方法是: MyClass[] testobjlist = new MyClass { new MyClass(1001,1234,”Text 1″, “abcdefghijklm”, “ding”), new MyClass(1002,2345,”Text xx”, “bla bla”, “dong”), new MyClass(1003,8653,”Text yy”, “blah blah even more”, “bamm!”) } 但不知怎的,这给了我一个奇怪的错误,我需要额外的} ??? 我不知道如果我应该提到这个,但是我使用Razor-engine 2将它用于网页。但我认为这是一个普通的C#问题? 我的解决方法是使用一个大小初始化数组,然后通过索引逐个添加元素,但我宁愿优先使用上面的解决方案,因为我可能需要在测试时按顺序上下移动项目,我有很多真实数据中超过3个。 想知道我在上面的代码中缺少什么……?

“公共”构造函数在抽象类中的相关性

抽象类中的“公共”构造函数是否有任何相关性? 我想不出任何可能的方法来使用它,在这种情况下不应该被编译器视为错误(C#,不确定其他语言是否允许)。 示例代码: internal abstract class Vehicle { public Vehicle() { } } C#编译器允许这个代码编译,而我无法从外部世界调用这个构造函数。 它只能从派生类调用。 所以不应该只允许’protected’和’private’修饰符。 请评论。

C# – 构造函数的链调用

我正在学习C#,我正在学习构造函数和构造函数的链调用,以便不必在每个构造函数中粘贴相同的代码(变量的相同值)。 我有三个构造函数,一个没有参数,一个有三个参数,一个有四个参数。 我要做的是,使用默认构造函数来调用三个参数的构造函数,传递参数(变量)的默认值和具有三个参数的构造函数,我正在寻找用四个参数调用构造函数的构造函数参数。 我似乎有第一个排序列出默认值,但我正在努力如何编写具有三个参数的构造函数,然后如果需要,使用四个参数调用构造函数。 默认构造函数应将类型字符串的所有实例变量分配给string.Empty。 public Address() { m_street = string.Empty; m_city = string.Empty; m_zipCode = string.Empty; m_strErrMessage = string.Empty; m_country = Countries; } public Address(string street, string city, string zip) { } public Address(string street, string city, string zip, Countries country) { } 我当时想要做以下事情,但它不起作用: – public Address(string street, string city, string zip) : this […]

C# – 为什么在字段初始值设定项中无法访问’this’?

为什么会产生编译器错误: class Foo { public Bar Baz = new Bar(this); } 但这不是: class Foo { public Bar Baz; public Foo() { this.Baz = new Bar(this); } } 从概念上讲,这两者是等价的,不是吗?

C#不从基类inheritance构造函数

可能重复: 构造函数和inheritance 为什么构造函数不被inheritance? 当定义inheritance自基类的类时,我必须重新定义其所有构造函数。 我想知道为什么C#不支持从基类的构造函数inheritance?

validation构造函数参数的正确方法是什么

所以我的构造函数中有一个带有单个字符串参数的类: public MyClass(string name) { this.Name = name; } 但我永远不想担心有人初始化一个名为NULL或零长度字符串的MyClass实例。 什么是最好的validation参数? 使用属性或方法,如果提供了无效参数,您可以随时执行任何操作,返回null或不设置任何内容。 但是一旦调用了构造函数,就会创建该对象的实例,无论它是否传递了有效的参数。 如下所示抛出exception最好的方法? 或者是否有其他方法更受欢迎? public MyClass(string name) { if (name == null | name == “”) throw new ArgumentException(“Name can not be null or blank”, “name”); this.Name = name; } 当然,如果参数无效,我总是可以将名称设置为某些默认值,如“未命名的MyClass”,但在这种情况下,我宁愿只是阻止一个无效的名称,然后尝试假设一些替代行为。