C
数据类型
- 值类型: bool char double int float等
- 引用类型:
对象类型 Object:当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。
动态类型 Dynamic
字符串类型 String - 指针类型
类型转换
序号 方法 & 描述
1 ToBoolean
2 ToByte
3 ToChar
4 ToDateTime
把类型(整数或字符串类型)转换为 日期-时间 结构。
5 ToDecimal
把浮点型或整数类型转换为十进制类型。
6 ToDouble
把类型转换为双精度浮点型。
8 ToInt32
把类型转换为 32 位整数类型。
9 ToInt64
把类型转换为 64 位整数类型。
12 ToString
把类型转换为字符串类型。
using System;
namespace MYTest
{
class Test
{
static void Main(string[] args)
{
//因为 Console.ReadLine() 只接受字符串格式的数据
string str = Console.ReadLine();
Console.WriteLine("输出字符串:{0}",str);
Console.WriteLine("输出转换成Convert.ToInt32类型:{0}",Convert.ToInt32(str));
Console.WriteLine("--------------------");
int a = 1;
//float类型后要加“f”
float b = 3.233f;
double c = 2.2;
Console.WriteLine(a.ToString());
Console.WriteLine("{0},{1},{2}",a.ToString(), b.ToString(),c.ToString());
Console.ReadLine();
}
}
}
常量
public const int a = 5;
封装
抽象和封装是面向对象程序设计的相关特性。
抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。
C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。
一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:
public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问(有助于实现继承);
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。
注:如果没有指定访问修饰符,则使用类成员的默认访问修饰符,即为 private。
using System;
namespace MyFirstProgram
{
class Rectangle
{
private double width;
private double length;
public void Detail()
{
width = Convert.ToDouble(Console.ReadLine());
length = Convert.ToDouble(Console.ReadLine());
}
public double GetArea()
{
return width * length;
}
public void Display()
{
Console.WriteLine("width:{0}", width);
Console.WriteLine("length:{0}", length);
Console.WriteLine("Area:{0}", GetArea());
}
}
class First
{
static void Main(string[] args)
{
Rectangle re = new Rectangle();
re.Detail();
re.Display();
}
}
}
在上面的实例中,成员变量 length 和 width 被声明为 private,所以它们不能被函数 Main() 访问。
成员函数 Detail() 和 Display() 可以访问这些变量。
由于成员函数 Detail() 和 Display() 被声明为 public,所以它们可以被 Main() 使用 Rectangle 类的实例 r 访问。
参数传递:
值参数:这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
eg: swap(int a,int b)不会改变值
引用参数:这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
输出参数:这种方式可以返回多个值。
数组
//普通数组
int[] n = new int[10];
double[] d = new double[10];
//多维数组
string[,] names;
int[,,] m;
int[,] a = new int[3, 4] {
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
//交错数组
int[][] scores = new int[5][];
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new int[4];
}
int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};
//传递数组给函数(其中arr是数组)
double getAverage(int[] arr, int size)
//参数数组
//[也就是将一组数据传递给另一个方法中去(该方法接收到的是一个数组的形式)](https://www.runoob.com/csharp/csharp-param-arrays.html)
//Array类: