内置值类型:
| C# 类型关键字 | .NET 类型 |
| --- | --- |
| [`bool`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/bool) | [System.Boolean](https://learn.microsoft.com/zh-cn/dotnet/api/system.boolean) |
| [`byte`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.Byte](https://learn.microsoft.com/zh-cn/dotnet/api/system.byte) |
| [`sbyte`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.SByte](https://learn.microsoft.com/zh-cn/dotnet/api/system.sbyte) |
| [`char`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/char) | [System.Char](https://learn.microsoft.com/zh-cn/dotnet/api/system.char) |
| [`decimal`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types) | [System.Decimal](https://learn.microsoft.com/zh-cn/dotnet/api/system.decimal) |
| [`double`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types) | [System.Double](https://learn.microsoft.com/zh-cn/dotnet/api/system.double) |
| [`float`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types) | [System.Single](https://learn.microsoft.com/zh-cn/dotnet/api/system.single) |
| [`int`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.Int32](https://learn.microsoft.com/zh-cn/dotnet/api/system.int32) |
| [`uint`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.UInt32](https://learn.microsoft.com/zh-cn/dotnet/api/system.uint32) |
| [`nint`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.IntPtr](https://learn.microsoft.com/zh-cn/dotnet/api/system.intptr) |
| [`nuint`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.UIntPtr](https://learn.microsoft.com/zh-cn/dotnet/api/system.uintptr) |
| [`long`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.Int64](https://learn.microsoft.com/zh-cn/dotnet/api/system.int64) |
| [`ulong`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.UInt64](https://learn.microsoft.com/zh-cn/dotnet/api/system.uint64) |
| [`short`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.Int16](https://learn.microsoft.com/zh-cn/dotnet/api/system.int16) |
| [`ushort`](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types) | [System.UInt16](https://learn.microsoft.com/zh-cn/dotnet/api/system.uint16) |
| 类型 | 描述 | 范围 | 默认值 |
| --- | --- | --- | --- |
| bool | 布尔值 | True 或 False | False |
| byte | 8 位无符号整数 | 0 到 255 | 0 |
| ushort | 16 位无符号整数类型 | 0 到 65,535 | 0 |
| uint | 32 位无符号整数类型 | 0 到 4,294,967,295 | 0 |
| unint | 无符号32位 或 64位整数 | | 0 |
| nint | 有符号32位或 64 位整数 | | 0 |
| ulong | 64 位无符号整数类型 | 0 到 18,446,744,073,709,551,615 | 0 |
| sbyte | 8 位有符号整数类型 | \-128 到 127 | 0 |
| short | 16 位有符号整数类型 | \-32,768 到 32,767 | 0 |
| int | 32 位有符号整数类型 | \-2,147,483,648 到 2,147,483,647 | 0 |
| long | 64 位有符号整数类型 | \-923,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
| char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '\\0' |
| float | 32 位单精度浮点型 | \-3.4 x 10^38到 + 3.4 x 10^38 | 0.0F |
| double | 64 位双精度浮点型 | (+/-)5.0 x 10^-324到 (+/-)1.7 x 10^308 | 0.0D |
| decimal | 128 位精确的十进制值,28-29 有效位数 | (-7.9 x 10^28到 7.9 x 10^28) / 100 到 28 | 0.0M |
int和Integer(默认值:null)还不一样?
long 和Long (默认值:null)还不一样?
```
float price1=12f;//不加f则默认为double
double price2=12d//d可以省略
decimal price3=12m
```
```
public class PlacementPoint
{
public string Name; //成员变量
}
//Name是public成员变量,其它类对象可以直接读写它
但问题是,1.这样做没有封装性,没有数据安全性;2.并且有时我们是想定义只能读或者只能写的成员;甚至可能在写(赋值)的时候加点其它判断逻辑啊。
于是引出了属性property,它有两个方法,一个是get读方法,一个是set写方法
//早期版本的属性语法
public class PlacementPoint
{
private string _name; //私有成员
//_name对应的属性定义
public string Name{
get {
return _name;
}
set{
//此处前后还可以做点其它逻辑判断
_name = value; //value是C#属性关键字,代表赋值时右边的新值
}
}
}
我就想定义一个简单的属性而已,写的代码是不是多了点,要先定义一个私有成员变量,再定义对应的set和get方法,如果一个类有多个这样的属性,代码就千篇一律,垃圾代码,于是C#又作出了改进,新语法中,上面的代码被简化成了:
public class PlacementPoint
{
public string Name { get; set; }
}
//C#编译器会帮你做代码扩展编译成之前的那种代码
如果我只想定义只读成员:
public class StandResponse
{
public string Code{get;}
}
```
如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。下面举例获取任何机器上 int 类型的存储尺寸:
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
- Visual Studio 2022安装到非C盘
- .net平台区别
- 常用单词
- 关键字
- 操作符(运算符)
- 标识符(命名规范)
- 开始
- 变量
- 常量
- 数据类型
- 值类型
- 变量数据类型
- 枚举类型enum(常量集合)
- 结构类型struct(结构体)
- 元组类型
- 可null类型(T?)
- 引用类型
- 数组(array)
- 集合(List)
- 内置引用类型
- object
- string
- Dynamic(动态类型)
- delegate委托(代理)类型
- 自定义引用类型
- 接口(interface)
- 类class
- record(定义一个引用类型)
- 指针类型(仅用于非安全代码)
- get和set访问器
- delegate委托
- delegate实现发布订阅与事件
- 类型转换
- 合并操作符??
- 类相关
- Partial 部分类
- 类定义以及访问修饰符(封装)
- abstract抽象类与sealed密封类
- virtual虚方法
- 接口interface
- C# 预处理器指令
- C#技术栈
- 判断(流程控制)与三元运算
- if
- switch
- 三元运算
- 循环
- while 循环
- for循环
- foreach循环
- do...while 循环
- 文件操作
- 其他
- 多开