构造函数是C#中用于初始化对象的特殊方法,名称必须与类名相同,无返回类型,可重载且自动调用;若未定义,系统提供默认无参构造函数。例如:public class Person { public string Name { get; set; } public Person() { Name = "Unknown"; } public Person(string name) { Name = name; } } 使用时 Person p1 = new Person(); 调用无参构造函数,Person p2 = new Person("Alice"); 调用带参构造函数。构造函数支持重载,可通过 this() 调用同类其他构造函数以避免重复代码,如 public Rectangle() : this(1, 1) { }。静态构造函数用于初始化静态成员,无访问修饰符、无参数、仅执行一次,如 static Logger() { LogFile = "app.log"; }。析构函数以 ~ 开头,用于垃圾回收前清理非托管资源,不可手动调用,执行时机不确定,推荐实现 IDisposable 接口并配合 using 语句使用,如 public class FileManager : IDisposable { public void Dispose() { CleanUp(true); GC.SuppressFinalize(this); } ~FileManager() { CleanUp(false); } }。

构造函数是C#中用于初始化对象的特殊方法,它在创建类的实例时自动调用。与普通方法不同,构造函数没有返回类型,且名称必须与类名完全相同。它的主要作用是为对象的字段或属性设置初始值,确保对象处于一个有效的状态。
例如:
public class Person
{
public string Name { get; set; }
// 无参构造函数
public Person()
{
Name = "Unknown";
}
// 带参构造函数
public Person(string name)
{
Name = name;
}
}
使用时:
Person p1 = new Person(); // 调用无参构造函数
Person p2 = new Person("Alice"); // 调用带参构造函数
C#允许在一个类中定义多个构造函数,只要它们的参数列表不同。这种机制称为构造函数重载,可以灵活地支持不同的对象初始化方式。
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle() : this(1, 1) { } // 默认尺寸
public Rectangle(int width) : this(width, width) { } // 正方形情况
public Rectangle(int width, int height)
{
Width = width;
Height = height;
}
}
这里使用 this() 调用同一个类中的其他构造函数,避免代码重复。
本文档主要讲述的是Python 函数、文件与模块,本文构造一个完整的 Python 程序。引入了 Python 函数和模块,并展示了构建一个 Python 程序、将其存储在文件中以及通过命令行运行该程序的方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
静态构造函数用于初始化类的静态成员。它只执行一次,且在第一次使用类之前由CLR自动调用。
• 没有访问修饰符public class Logger
{
public static string LogFile;
static Logger()
{
LogFile = "app.log";
Console.WriteLine("日志系统已初始化");
}
}
析构函数用于在对象被垃圾回收前执行清理工作,比如释放非托管资源。它由CLR自动调用,不能手动触发。
• 名称与类名相同,前面加 ~ 符号public class FileHandler
{
private IntPtr filePtr;
// 析构函数
~FileHandler()
{
if (filePtr != IntPtr.Zero)
{
// 释放非托管资源
CloseHandle(filePtr);
filePtr = IntPtr.Zero;
}
}
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern bool CloseHandle(IntPtr handle);
}
需要注意的是,析构函数的执行时间不可预测,因为它依赖于垃圾回收机制。因此,对于需要及时释放的资源,推荐实现 IDisposable 接口并使用 using 语句。
public class FileManager : IDisposable
{
private bool disposed = false;
public void Dispose()
{
CleanUp(true);
GC.SuppressFinalize(this);
}
~FileManager()
{
CleanUp(false);
}
private void CleanUp(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// 释放托管资源
}
// 释放非托管资源
disposed = true;
}
}
}
使用示例:
using (var manager = new FileManager())
{
// 使用资源
} // 自动调用Dispose()
以上就是C#中的构造函数是什么 C#类的构造函数和析构函数详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号