C#基本概念和类型(完善中)

  1.结构体

struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。

public struct Book
{
    public decimal price;
    public string title;
  
  public string author;
}

结构还可以包含构造函数常量字段方法属性索引器运算符事件嵌套类型,但如果同时需要上述几种成员,则应当考虑改为使用类作为类型。

结构可以实现接口,但它们无法继承另一个结构。因此,结构成员无法声明为 protected

2.常量

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。例如:

const int x = 0;

public const double gravitationalConstant = 6.673e-11;

private const string productName = "Visual C#";

常数表达式是在编译时可被完全计算的表达式。因此,对于引用类型的常数,可能的值只能是 stringnull

常数声明可以声明多个常数,例如:

public const double x = 1.0, y = 2.0, z = 3.0;

不允许在常数声明中使用 static 修饰符。

常数可以参与常数表达式,如下所示:

public const int c1 = 5;
public const int c2 = c1 + 100;

readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而readonly 字段可用于运行时常数,如下面的代码行所示:public static readonly uint l1 = (uint)DateTime.Now.Ticks;

3.short整形类型

short 关键字表示一种整数数据类型,该类型根据下表显示的大小和范围存储值。

类型 范围 大小 .NET Framework 类型

short

-32,768 到 32,767

有符号 16 位整数

System.Int16

 

可如下例所示声明并初始化 short 类型的变量:   short x = 32767;          在以上声明中,整数32767int 隐式转换为short

使用 short 强制转换可保证调用正确的类型,例如:

SampleMethod(5);         // Calling the method with the int parameter
SampleMethod((short)5);  // Calling the method with the short parameter

存在从 shortintlongfloatdoubledecimal 的预定义隐式转换。不能将存储大小更大的非文本数值类型隐式转换为short

short x = 5, y = 12;      则

以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。

short z = x + y; // Error: no conversion from int to short

若要解决此问题,请使用强制转换:

short z = ( short)(x + y); // OK: explicit conversion

但是,在目标变量具有相同或更大的存储大小时,使用下列语句是可能的:

int m = x + y;    long n = x + y;

不存在从浮点型到 short 的隐式转换。例如,除非使用显式强制转换,否则以下语句将生成一个编译器错误:

short x = 3.0; // Error: no implicit conversion from double

short y = (short)3.0; // OK: explicit conversion

 4.委托(或者“代理”)

待完善这个!!!!!! 

5.装箱 拆箱

装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。如下,把整形值类型装箱成object引用类型。即整型变量i 被“装箱”并赋值给对象o

int i = 123;
object o = (object) i;  // boxing

拆箱将从对象中提取值类型。然后,可以对对象 o 取消装箱并将其赋值给整型变量 i

o = 123;
i = (int) o;  // unboxing
性能

相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。次之,取消装箱所需的强制转换也需要进行大量的计算。总之:拆箱和装箱的计算量比较大,尽量少使用。

6.for循环

int iSum = 1;
        Console.Write("请输入一个正整数:");
        int j = int.Parse(Console.ReadLine());
        for (int i = 1; i <= j; i++)
        {
            iSum *= i;
        }
        Console.Write("|第一种for循环|");
        Console.WriteLine("从1到{0}的阶乘是{1}。",j,iSum);
        iSum = 1;
        int k = 1;
        for (; ; )
        {
            if (k > j)
            {
                break;
            }
            iSum *= k;
            k++;
        }
        Console.Write("|第二种for循环|");
        Console.WriteLine("从1到{0}的阶乘是{1}", j, iSum);

 上述两个for循环的结果一样,都是求取1到n的阶乘。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值