Tag: 构造函数

在C#中,如何使用reflection访问花括号构造函数?

在C#中,我们现在可以使用花括号构造函数构造新对象,即 class Person { readonly string FirstName {get; set;} readonly string LastName {get; set;} } new Person { FirstName = “Bob”, LastName = “smith” } 我需要使用reflection来构造这个对象,但是如果这些成员变量被标记为只读,我只能在构造函数中设置它们,并且只有花括号构造函数可用。 有什么方法可以使用reflection访问花括号样式的构造函数? 谢谢。

C#构造函数设计

我有一个你在一个文件夹中传递的类,然后它会关闭并处理指定文件夹中的大量数据。 例如: MyClass myClass = new MyClass(@”C:\temp”); 现在它关闭并读取说几千个文件并用数据填充该类。 我应该从构造函数中移出这些数据并将其作为单独的方法,例如以下方法吗? MyClass myClass = new MyClass(); myClass.LoadFromDirectory(@”C:\temp”);

C#调用基类构造函数

public CArm(Vector3 at, string name) : base(name) { } 有没有其他方法可以在括号内调用基本父构造函数而不是执行: base(name) ? 我不确定这是否是另一种语言,但我记得像super(); 在构造函数内部调用基类。 谢谢。

在C#中从另一个体中调用一个构造函数

我需要从另一个构造函数中调用一个构造函数。 我怎样才能做到这一点? 基本上 class foo { public foo (int x, int y) { } public foo (string s) { // … do something // Call another constructor this (x, y); // Doesn’t work foo (x, y); // neither } }

检查空参数的最佳方法(Guard子句)

例如,您通常不希望构造函数中的参数为null,因此看到类似的东西是很正常的 if (someArg == null) { throw new ArgumentNullException(nameof(someArg)); } if (otherArg == null) { throw new ArgumentNullException(nameof(otherArg)); } 它会使代码混乱一些。 有没有办法比这更好地检查一个参数列表的参数? 像“检查所有参数并抛出ArgumentNullException,如果它们中的任何一个为null并且为您提供null的参数”之类的东西。 顺便说一下,关于重复的问题声明,这不是关于用属性或内置的东西标记参数,而是有人称之为Guard Clauses以保证对象接收初始化的依赖关系。

在构造函数中尝试/ catch块

在构造函数中使用try / catch块是一种糟糕的编程习惯吗? 或者只要我们的程序优雅地处理typeinitializerexception,它就没有任何区别。 在C#中,如果构造函数中有任何exception,框架总是抛出typeinitilizerexception。 谢谢,Shamika

Controller中带参数的构造函数 – MVC

我读过很多关于IOC和Unity的文章,让我感到困惑:( 所以回到基础可以告诉我以下代码的作用吗? private IStudent _student; public HomeController(IStudent student) { _student= student; } public interface IStudent { // Some method } Itz Basic,但我试图从外行的角度来理解。 上面的代码到底是做什么的?

为什么要使用Create方法而不是使用“new”?

有什么优点,什么时候使用静态构造函数是合适的? public class MyClass { protected MyClass() { } public static MyClass Create() { return new MyClass(); } } 然后通过创建类的实例 MyClass myClass = MyClass.Create(); 而不是只有一个公共构造函数和使用创建对象 MyClass myClass = new MyClass(); 我可以看到,如果Create方法返回类实现的接口实例,第一种方法很有用……它会强制调用者创建接口的实例而不是特定的类型。

我如何调用构造函数初始值设定项,base()和this()?

这很容易解决,但我只是好奇我是否可以使用语言function,或者可能是语言不允许这意味着我在课堂设计中犯了一个逻辑错误。 我正在对我的代码进行自我审查,以帮助“强化”它以便重复使用,我刚刚来到: public partial class TrackTyped : Component { IContainer components = null; public TrackTyped() : base() { InitializeComponent(); } public TrackTyped(IContainer container) : base() { container.Add(this); InitializeComponent(); } } 当我在两个构造函数中看到相同的代码行时,我通常会做的是使用“this()”调用另一个,但我似乎无法做到。 如果我正确阅读规范(我刚开始尝试阅读规范,所以我可能不对): 10.11 Instance Constructors constructor-declarator: identifier ( formal-parameter-listopt ) constructor-initializeropt constructor-initializer: : base ( argument-listopt ) : this ( argument-listopt ) 它说我只能有其中一个。 问题:10.11是否意味着没有理由需要同时调用它们,或者它只是暗示该语言仅支持调用它?

没有构造函数的C#类

C#中的类怎么可能没有定义构造函数? 比如我有一个class级 internal class TextStyle { internal string text = “”; internal Font font = new Font(“Arial”, 8); internal Color color = Color.Black; } 在代码中,这个类被实例化为 TextStyle textParameters = new TextStyle();