个性化阅读
专注于IT技术分析

在C#中创建对象的不同方法有哪些?

完全面向对象的语言意味着所有内容都表示为一个对象, 但是不能区分原始类型和类的对象, 但是C#并非纯粹面向对象, 因为它支持许多过程编程概念, 例如某种程度上的指针。对象是面向对象编程的基本单元, 代表现实生活中的实体。一个典型的C#程序会创建许多对象, 你知道这些对象通过调用方法进行交互。我们可以通过以下方式在C#中创建对象:

1)使用” new”运算符:类是引用类型, 并且在运行时, 除非使用new运算符声明该引用类型的任何对象, 否则它将为该对象分配空值。新操作符仅在运行时才将内存中的空间分配给对象, 这意味着分配是动态的。

语法如下:

//The className() is a call
//to the constructor
className ObjectName = new className();

注意:的建设者可以是默认构造函数, 也可以是用户定义的构造函数。

例子:

//C# Program to show the use
//of the new Operator
using System;
  
namespace NewOperator {
  
class Rectangle {
  
     public int length, breadth;
  
     //Parameterized Constructor
     //User defined
     public Rectangle( int l, int b)
     {
         length = l;
         breadth = b;
     }
  
     //Method to Calculate Area
     //of the rectangle
     public int Area()
     {
         return length * breadth;
     }
}
  
//Driver Class
class Program {
  
     //Main Method
     static void Main( string [] args)
     {
         //Creating an object using 'new'
         //Calling the parameterized constructor
         //With parameters 10 and 12
         Rectangle rect1 = new Rectangle(10, 12);
  
         //To display are of the Rectangle
         int area = rect1.Area();
         Console.WriteLine( "The area of the" +
                    " Rectangle is " + area);
     }
}
}

输出如下:

The area of the Rectangle is 120

2)创建对现有对象的引用:只能使用类名和引用名声明引用。该引用不能独立存在。必须将其分配给相同类的现有对象。对引用所做的任何更改都将保存到引用的对象中。这有点像别名。

语法如下:

className RefName;
RefName = objectName;

例子:

//C# Program to show the use
//of references
using System;
  
namespace Reference {
  
class Triangle {
  
     public int side, altitude;
     //Not defining a constructor
  
     //Method to calculate area
     //of the Triangle
     public double Area()
     {
         return ( double )0.5 * side * altitude;
     }
}
  
//Driver Class
class Program {
  
     //Main Method
     static void Main( string [] args)
     {
         //Creating an object using new
         //calls the default constructor
         Triangle tri1 = new Triangle();
  
         //Only creates a reference of
         //type Triangle
         Triangle tri2;
  
         //Displaying area of tri1
         Console.WriteLine( "Area of tri1 is " 
                              + tri1.Area());
  
         //Assigns the reference to tri1
         tri2 = tri1;
  
         //Making changes in tri2
         tri2.side = 5;
         tri2.altitude = 7;
  
         //Displaying area of tri1
         //Changes made in the reference tri2
         //are reflected in tri1 also
         Console.WriteLine( "Area of tri1 is " 
                              + tri1.Area());
     }
}
}

输出如下:

Area of tri1 is 0
Area of tri1 is 17.5

3)创建对象数组:如果需要多个相同类的对象, 则可以创建一个对象数组。这将要求你首先声明数组, 然后初始化每个元素{在这种情况下为object}。你可以使用for循环进行初始化。

语法如下:

className[] arrayName = new className[size];
//C# Program to illustrate how to 
//create the array of objects
using System;
  
namespace ArrayofObjects {
  
class Circle {
  
     public int radius;
  
     //Definig Constructor
     public Circle()
     {
         radius = 0;
     }
  
     //Method to set value of radius
     public void setValue( int r)
     {
         radius = r;
     }
  
     //Method to calculate the 
     //area of the Circle
     public double Area()
     {
         return ( double )3.14 * radius * radius;
     }
}
  
//Driver Class
class Program {
  
     //Main Method
     static void Main( string [] args)
     {
         //To declare an array of two objects
         Circle[] circleArray = new Circle[2];
  
         //Initialize the objects
         circleArray[0] = new Circle();
         circleArray[1] = new Circle();
  
         //to set values for the radius
         circleArray[0].setValue(1);
         circleArray[1].setValue(2);
  
         //for loop to display areas
         for ( int i = 0; i <circleArray.Length; i++) 
         {
             Console.Write( "Area of circle with radius " + (i + 1));
             Console.Write( " is " + circleArray[i].Area() + "\n" );
         }
     }
}
}

输出如下:

Area of circle with radius 1 is 3.14
Area of circle with radius 2 is 12.56

赞(0)
未经允许不得转载:srcmini » 在C#中创建对象的不同方法有哪些?

评论 抢沙发

评论前必须登录!