【c# – 即使多次调用类,如何使构造函数只被调用一次?】教程文章相关的互联网学习教程文章

c# – 我可以从另一个构造函数中调用构造函数(作为常规方法)吗?【代码】

假设我有2个构造函数.public class MyClass {public MyClass(){int id = 0;//Same behaviour}Public MyClass(int id){//Same behaviour} }两种结构都实现相同的行为.唯一的区别是,如果调用第一个构造函数并且id = 0; 我的问题是知道我是否可以调用第二个构造函数,而不是实现相同的行为?如果可能的话,我会这样做吗?解决方法:是的,这称为构造函数链接.它是这样实现的:public class MyClass {public MyClass() : this(0) { }public...

c# – 构造函数和类成员初始化之间的差异?【代码】

在使用传递参数进行实例化时使用构造函数之间的区别是什么Customer Costomer1 = new Customer(100, Mark, 5000);并做同样但没有传递给构造函数但只是实例化成员?Customer Costomer1 = new Customer() { ID = 100, Name = "Mark", Salary = 5000, };哪一种更好,哪种情况好? 如果我说构造函数是在实例化对象时需要做更多的工作而成员初始化仅用于字段和属性的签名值,那么我是否正确? 如果我正确理解这一点,为什么你会使用构造函数...

c# – 在同一个类的构造函数中传递类的对象【代码】

如何用StudentId = 1和Name =“Alex”初始化这样的类class Student {public int StudentId { get; set; }public string Name { get; set; }public Student(Student student){StudentId = student.StudentId;Name = student.Name;} } class Program {static void Main(string[] args){Student s = new Student()} }解决方法:您可以添加另一个手动提供值的构造函数:public Student(int id, string name) {StudentId = id;Name = nam...

c# – 未调用构造函数【代码】

public class Unit {public int UnitId { get; set; }public Engine EngineStuff { get; set; }} public class Engine {public int PS { get; set; }public int MaxSpeed { get; set; } }var unit = new Unit(); unit.UnitId = 3; //OK because Unit-constructor was called unit.EngineStuff.PS = 200; //error, because EngineStuff-constructor obviously wasn't called.如何调用这个“内部”构造函数?我以为它会自动初始化它?...

C#构造函数使用私有/公共字段[复制]【代码】

参见英文答案 > OO Design – do you use public properties or private fields internally? 10个 class Student { private string firstName;public string FirstName{get{return firstName;}set{firstName = value; // Possible logical checks may be implemented here in the future}}public Student (firstName){this.firstName = firstName; // Option 1// OrFirstName = firstName; /...

需要C#构造函数语法解释【代码】

有人可以向我解释以下构造函数语法.我以前没遇到它,并在同事代码中注意到它.public Service () : this (Service.DoStuff(), DoMoreStuff()) { }解决方法:它链接到同一个类中的另一个构造函数.基本上任何构造函数都可以使用:this(…)链接到同一个类中的另一个构造函数,或者使用:base(…)链接到基类中的构造函数.如果你没有,它相当于:base(). 链接的构造函数在执行实例变量初始化程序之后但在构造函数的主体之前执行. 有关更多信息...

c# – 无论如何都可以创建一个公共静态构造函数吗?【代码】

在Visual Studio 2012中有一条规则说:Static constructors should be private,但编译器不允许这样做.所以无论如何我们可以创建公共静态构造函数吗? 更新:在链接中,它说“如果静态构造函数不是私有的,它可以由系统以外的代码调用.”它让我想到了这个问题.解决方法:您必须省略public / private修饰符:public class Test {static Test(){} }实际上,私有静态构造函数的概念有点脆弱,因为静态构造函数只能由CLR(运行时)调用(并且可以...

c# – 构造函数参数的命名约定?【代码】

嘿伙计们,我总是遇到一个问题,即类中的Public变量的名称和我传递给相同类构造函数的参数之间的相似性. 在定义对象的新实例时,例如Car.用户/程序员唯一能看到的是它所寻找的参数的名称和类型. 例如:public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels) { }用户将看到这些名称和类型,并且只能根据其类型和名称知道它们是什么,从而排除任何xml摘要标记. 现在,我们总是希望我们的公共变量也非常具体. 例如:public Color ...

c# – 如何简化多个构造函数?【代码】

我想为一个类有两个构造函数,如下所示:public MyClass() {// do stuff here }public MyClass(int num) {MyClass();// do other stuff here }以上是达到我目的的正确方法吗?有什么样的速记更好吗?解决方法: public MyClass() {// do stuff }public MyClass(int num): this () {// do other stuff with num }:this()位称为构造函数初始化程序. C#中的每个构造函数都有一个初始化器,它在构造函数本体之前运行.默认情况下,初始化器...

c# – 在构造函数中委派调用【代码】

我遇到了一个容易解决的设计问题,但是在我年轻的时候还没有遇到过. 我有一个课程需要经过一些设置程序才能发生其他事情. 但是,在构造这个类的过程中,我在构造函数的参数中有一个可以传递的委托,以便用户可以将自己的信息添加到类中. 当调用它时,创建类的作用域仍然没有有效的实例,因此会发生null异常错误. 我该如何设计呢?我应该将“this”的实例传递给该代表吗? 在这里做出什么样的好决定?我有一个“StartServices()”方法,我可...

调用基础构造函数c#时出错【代码】

class Student {int id;string name;public Student(int id, string name){this.id = id;this.name = name;}public int Id{get { return id; }set { id = value; }}public string Name{get { return name; }set { name = value; }} } class SubStudent : Student {int ssn;public SubStudent(int id, int name, int ssn): base(int id, string name){} }上面的代码生成错误“term int的无效表达式”可能有什么不对?解决方法:您不需...

c# – 为什么DateTime.Now.ToBinary()返回的值不同于构造函数创建的值【代码】

这就是我尝试过的:DateTime now = DateTime.Now; long timeA = now.ToBinary(); long timeB = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond).ToBinary();Debug.WriteLine("{0} {1}", timeA, timeB);这是输出:-8588637543837682554 634734565017110000timeA和timeB本质上应该是相同的东西,但它们被转换为完全不同的(负)二进制. 为什么会这样?为什么在DateTime.Now上直接调用T...

c# – 如何在没有new的情况下调用构造函数?【代码】

我知道字符串就像一个类,当创建一个新字符串时,字符串本身并不欠值,而只是值的指针.但是在创建字符串时,不需要使用new;string a = "hello";并不是string a = new string("hello");我知道第二个选项也是可能的,但我想了解的是为什么第一个? 假设我有一个班级学生,他的构造函数得到一个字符串.要创建一个新类,我必须使用保存的单词new.student example = new student("Sabrina");我试过重载oparator =但是不可能. 如何像字符串一样创...

c# – 是否需要默认构造函数?【代码】

这两者有什么区别?class Class1 {public int a = 1; }class Class2 {public int a;public Class2(){a = 1;} }如果没有,我可以跳过默认构造函数并像Class1一样初始化我的变量吗?解决方法:在您的具体示例中,字段初始值设定项(Class1)很好.可以说,不公平的是公共领域; p我会建议:// manually implemented property with field-initializer private int a = 1; public int A { get { return a;} set { a = value;} }要么:// automa...

c# – 我可以使用通用约束来启用参数化构造函数吗?【代码】

我有这样的功能:public List<T> SelectAll<T>() where T : DatabaseObject, new() {List<T> retVal = new List<T>();String command = "Select * from " + GetType().Name;MySqlCommand cmd = DatabaseRunner.GetCommand(command);MySqlDataReader reader = cmd.ExecuteReader();while (reader.Read()){T newObj = new T(reader);}return retVal; }您可以看到当我尝试创建新的T对象时,我将MySqlDataReader对象传递给构造函数.如何...

构造函数 - 相关标签