初识C#

C#基础知识

C#基本定义

C#编程功能介绍

定义: C#是一门面向对象的编程语言,与java非常相似,下面列出C#的一些主要的功能。

  • 布尔条件(Boolean Conditions)
  • 自动垃圾回收(Automatic Garbage Collection)
  • 标准库(Standard Library)
  • 组件版本(Assembly Versioning)
  • 属性(Properties)和事件(Events)
  • 委托(Delegates)和事件管理(Events Management)
  • 易于使用的泛型(Generics)
  • 索引器(Indexers)
  • 条件编译(Conditional Compilation)
  • 简单的多线程(Multithreading)
  • LINQ和Lambda表达式
  • 集成Windows
C#可空类型(Nullable)
C# 单问号 ?
  • ? : 单问号用于对 int,double,bool 等无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是 Nullable 类型的。
int? num1 = null;
int? num2 = 45;
double? num3 = new double?();
double? num4 = 3.14157;
bool? boolval = new bool?();
// 显示值
Console.WriteLine("显示可空类型的值: {0}, {1}, {2}, {3}",  num1, num2, num3, num4);
Console.WriteLine("一个可空的布尔值: {0}", boolval);
  • 空值什么都不显示
显示可空类型的值: , 45,  , 3.14157
一个可空的布尔值:
双问号 ?? & Null 合并运算符( ?? )
  • ?? : 双问号 可用于判断一个变量在为 null 时返回一个指定的值。
Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null。Null 合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型
double? num1 = null;
double? num2 = 3.14157;
double num3;
num3 = num1 ?? 5.34;      // num1 如果为空值则返回 5.34
Console.WriteLine("num3 的值: {0}", num3);
num3 = num2 ?? 5.34;
Console.WriteLine("num3 的值: {0}", num3);
num3的值: 5.34
num3 的值: 3.14157
运算符重载
  • 通过关键字operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。
public static Box operator+ (Box b, Box c)
{
   Box box = new Box();
   box.length = b.length + c.length;
   box.breadth = b.breadth + c.breadth;
   box.height = b.height + c.height;
   return box;
}
运算符描述
+, -, !, ~, ++, –这些一元运算符只有一个操作数,且可以被重载。
+, -, *, /, %这些二元运算符带有两个操作数,且可以被重载。
==, !=, <, >, <=, >=这些比较运算符可以被重载。
&&,这些条件逻辑运算符不能被直接重载。
+=, -=, *=, /=, %=这些赋值运算符不能被重载。
=, ., ?:, ->, new, is, sizeof, typeof这些运算符不能被重载。
C#预处理指令列表
预处理器指令描述
#define它用于定义一系列成为符号的字符。
#undef它用于取消定义符号。
#if它用于测试符号是否为真。
#else它用于创建复合条件指令,与 #if 一起使用。
#elif它用于创建复合条件指令。
#endif指定一个条件指令的结束。
#line它可以让您修改编译器的行数以及(可选地)输出错误和警告的文件名。
#error它允许从代码的指定位置生成一个错误。
#warning它允许从代码的指定位置生成一级警告。
#region它可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。
#endregion它标识着 #region 块的结束。
#define 预处理器
  • #define 预处理器指令创建符号常量。
  • #define 允许您定义一个符号,这样,通过使用符号作为传递给 #if 指令的表达式,表达式将返回 true。它的语法如下
#define PI 
using System;
namespace PreprocessorDAppl
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}
  • PI is defined
C#中的$使用

string.Format的语法糖 中使用 $ :用于变量的定义

int j = 1;
Console.WriteLine(string.Format("j的值是:{0}",j));
Console.WriteLine($"j的值是:{j}");
Console.WriteLine("j的值是:{0}", j);

C#中的数字类型总结

C#中的数字 也会发生溢出或者下溢情况。
整数类型
C# 类型/关键字范围大小.NET 类型
sbyte-128 到 1278 位带符号整数System.SByte
byte0 到 255无符号的 8 位整数System.Byte
short-32,768 到 32,767有符号 16 位整数System.Int16
ushort0 到 65,535无符号 16 位整数System.UInt16
int-2,147,483,648 到 2,147,483,647带符号的 32 位整数System.Int32
uint0 到 4,294,967,295无符号的 32 位整数System.UInt32
long-9,223,372,036,854,775,808 到 9,223,372,036,854,775,80764 位带符号整数System.Int64
ulong0 到 18,446,744,073,709,551,615无符号 64 位整数System.UInt64
强制类型转换
  • is运算符: 用于检查表达式的运行时类型是否与给定类型兼容
/*
E is T -->  E 是返回一个值的表达式,T 是类型或类型参数的名称。
*/
//is 运算符将考虑装箱和取消装箱转换,但不会考虑数值转换:
int i = 27;
Console.WriteLine(i is System.IFormattable);  // output: True

object iBoxed = i;
Console.WriteLine(iBoxed is int);  // output: True
Console.WriteLine(iBoxed is long);  // output: False
/*
E is T v
E 为返回值的表达式,T 为类型或类型参数的名称,v 为类型 T 的新局部变量。 
如果 E 的结果为非 null 且可以通过引用、装箱或取消装箱转换来转换为 T,
则 E is T v 表达式将返回 true,E 结果转换后的值将分配给变量 v。
*/

//演示代码
int i = 23;
object iBoxed = i;
int? jNullable = 7;
if (iBoxed is int a && jNullable is int b)
{
    Console.WriteLine(a + b);  // output 30
}
  • as运算符: 用于将表达式显示转换为给定类型(如果其运行时类型与该类型兼容)
/*
E as T 
E 为返回值的表达式,T 为类型或类型参数的名称,生成相同的结果
*/
/*
E is T ? (T)(E) : (T)null
*/
  • 强制转换表达式: 执行显示转换
  • type of 运算符: 用于获取某个类型的 System.Type 实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值