关于C# 类和对象详情

 更新时间:2021年9月18日 08:06  点击:1487

一、对象的定义和创建

定义类对象的方法为:

类名 对象名;

类是引用类型的,当定义了对象之后,系统会为数据引用分配存储空间,但是用来保存对象的实际数据的空间并没有分配。

对象的创建

创建对象时需要使用new运算符new运算符可以为任意指定类类型的实例分配并初始化内存。

创建对象的语法形式如下: 对象名 = new类名();

代码示例,对象的定义和创建:

class Program
{
    static void Main(string[] args)
    {
        //对象的定义和创建
        Test t = new Test();
        
        //或者 先定义
        Test t1;
        // 使用时创建
        t1 = new Test();
    }
}

class Test
{
    
}  

行对象的创建时,需要注意:

  • new运算符后为要创建的对象所属类的类名
  • 类名后的圆括号不能省略
  • 可以将对象的定义和创建合并在一起

二、、对象的初始化

C#中实现对象初始化的方式有两种:

  1. 借助构造函数或使用
  2.  对象初始化列表。

1. 借助构造函数或使用

new运算表达式的圆括号中所带参数并不是任意的,圆括号中是否支持参数、可以携带几个参数是由对象所属类的构造函数形式决定的。

C#的类支持两种构造函数:实例构造函数和静态构造函数

实例构造函数是实现初始化类实例所需操作的成员。

静态构造函数是一种用于在第一次加载类本身时实现其初始化所需操作的成员。

C#类的静态构造函数初始化类层次的项目。通常,静态构造函数初始化类的静态字段。

类层次的项目初始化必须在任何静态成员被引用之前,同时也必须在该类的所有对象创建之前。

2. 实例构造函数

实例构造函数是一个特殊的方法,它在创建类的每个新对象时执行,用以初始化对象的状态。

实例构造函数应该声明为public

下面是实例构造函数的一般定义形式:

// 无参构造
public 类名()
{
    函数体
}
// 带参构造
public 类名(参数列表)
{
    函数体
}

定义实例构造函数时需注意:

  • 实例构造函数可以带有参数,也可以不带参数,
  • 实例构造函数的参数设置决定了对象创建时new运算表达式中圆括号中的参数格式;
  • 实例构造函数可以重载。

其他说明:

  • 当类的声明中没有显式提供实例构造函数时,编译器会提供一个隐式的默认构造函数。
  • 默认构造函数不带参数,并且方法体为空。
  • 调用默认构造函数实现对象创建时,new运算表达式后的圆括号内不能带有参数。

3. 静态构造

静态构造函数:

  • C#类的静态构造函数初始化类层次的项目。
  • 通常,静态构造函数初始化类的静态字段。
  • 类层次的项目初始化必须在任何静态成员被引用之前,同时也必须在该类的所有对象创建之前。

使用静态构造函数时,需注意:

  • 静态构造函数只有一个,不能重载,并且不能带参数;
  • 静态构造函数不能有访问修饰符,它由系统自动调用;
  • 类的静态构造函数和实例构造函数可以共存;
  • 静态构造函数不能访问类的实例成员。

代码示例:

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test();
        // 输出: 0,0,1
        Console.WriteLine(t.X + "," + t.Y + "," + Test.Z)

        Test t1 = new Test(1, 2);
        // 输出: 1,2,2
        Console.WriteLine(t1.X + "," + t1.Y + "," + Test.
                    
        Test t2 = new Test(3, 4);
        // 输出: 3,4,3
        Console.WriteLine(t2.X + "," + t2.Y + "," + Test.

        Console.ReadLine();
    }
}

class Test
{
   public int X = 0;
   public int Y = 0;

   public static int Z = 0;

    // 无参构造
    public Test() { Z++; }

    // 带参构造
    public Test(int X, int Y)
    {
        this.X = X;
        this.Y = Y;
        Z++;
    }

    // 静态构造 -- 初始化Z值
    static Test()
    {
        Z = 0;
    }
}    

三、对象的引用

对象成员的引用形式为:

对象名.实例成员名
// 或者
对象名.实例成员名(实参列表)

对象的运算同一类的两个对象支持赋值、相等与不相等运算如下所示:

Test t = new Test();
Test t1 = new Test();

// 输出:false
Console.WriteLine(t == t1);
// 对象的赋值操作
t = t1;
// 输出:true --> 此时t,t1表示为同一对象
Console.WriteLine(t == t1);

对象之间除了可以进行比较,赋值操作之外。还可以至此isas运算符,isas运算符更多的应用于基类和派生类之间进行类型转换,详细说明在继承处讲解。

到此这篇关于关于C# 类和对象详情的文章就介绍到这了,更多相关C# 类和对象内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • 浅谈C# 字段和属性

    这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
  • C#实现简单的登录界面

    我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望大家能够喜欢。...2020-06-25
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • C#实现简单的Http请求实例

    这篇文章主要介绍了C#实现简单的Http请求的方法,以实例形式较为详细的分析了C#实现Http请求的具体方法,需要的朋友可以参考下...2020-06-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#中new的几种用法详解

    本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧...2020-06-25
  • 使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • C#和JavaScript实现交互的方法

    最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • C#变量命名规则小结

    本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • c#自带缓存使用方法 c#移除清理缓存

    这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
  • c#中(&&,||)与(&,|)的区别详解

    这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 经典实例讲解C#递归算法

    这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • C#中list用法实例

    这篇文章主要介绍了C#中list用法,结合实例形式分析了C#中list排序、运算、转换等常见操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#检测usb设备拨插类库USBClassLibrary分享

    这篇文章主要介绍了c#检测usb设备拨插类库USBClassLibrary的简单示例,需要的朋友可以参考下...2020-06-25